0

我从网站论坛上得到了这个正则表达式来查找文本中的链接并将它们替换为 html 链接,以便它们可以点击。

当有人输入如下所示的新 youtube 链接之一时,问题就出现了:

http://youtu.be/djKd189-ag2

发生的情况是链接由破折号组成,然后 -ag2 自行保留。

我对 php 正则表达式的了解还不够,甚至不敢更改它以添加解析破折号,所以我希望能得到一些帮助:

$newText = preg_replace('@((http|https)://([\w-.]+)+(:\d+)?(/([\w/_.]*(\?\S+)?)?)?)@', 
             '<a href="$1" class="link1" target="_blank">$1</a>',$text);

我猜它在 \S+ 部分附近

4

1 回答 1

2
$newText = preg_replace('@((http|https)://([\w-.]+)+(:\d+)?(/([\w/_-.]*(\?\S+)?)?)?)@', 
             '<a href="$1" class="link1" target="_blank">$1</a>',$text);

你只需要一个 '-' 写成 '[\w/_.]'

于 2012-05-08T13:15:39.050 回答