Regex 使用正则表达式将URL转换为活动链接

Regex 使用正则表达式将URL转换为活动链接,regex,Regex,我用php编写了这段代码,它将文本中的URL转换为活动的html链接 例如,在字符串中 Hey check this cool link http://www.example.com Wow have you checked http://www.youtube.com/watch?v=dQw4w9WgXcQ its even better than http://www.example.com !!! 这将转变为: 嘿,看看这个很酷的链接 正如您所看到的,它只是添加了正确的html标记 代

我用php编写了这段代码,它将文本中的URL转换为活动的html链接

例如,在字符串中

Hey check this cool link http://www.example.com
Wow have you checked http://www.youtube.com/watch?v=dQw4w9WgXcQ its even better than http://www.example.com !!!
这将转变为:

嘿,看看这个很酷的链接

正如您所看到的,它只是添加了正确的html标记

代码如下:

$active_links_text = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]","<a href=\"\\0\">\\0</a>", $original_text); 
我想变成

Wow have you checked http://www.youtube.com/watch?v=dQw4w9WgXcQ its even better than <a href="http://www.example.com">http://www.example.com</a>
哇,你查过了吗http://www.youtube.com/watch?v=dQw4w9WgXcQ 它甚至比 如您所见,
html标记被添加到example.com的URL中,但没有添加到youtube的URL中

我怎样才能做到这一点

我希望我描述我的问题足够好,我希望它很容易实现这一点!最后注意:我在PHP5.2.14中使用了这段代码


谢谢你们

[编辑:哇,我把你的问题完全搞错了!下面是帮助你的一个更好的尝试。]

我在js中试一试,这是原始正则表达式:
/(http:\/\/(?!www.youtube)[^\s]+)\b/g
,因为我不是php程序员。消极的前瞻性阻止了随意的www.youtube匹配(如果需要更复杂的模式,可以调整前瞻性内容)

据我所知,这里没有特定的js,但我不知道ereg正则表达式语法。使用preg函数时,您只需不逃避斜杠,单词边界
\b
和反向前瞻
(?!*pattern*)
是相同的。
/g
标志用于全局替换,即在第一次匹配时不停止,我想您的工具箱中有一种replaceAll函数


另外,我不确定php中的全局标志,我想您可以调用一种replaceAll函数。

关于有效的URI组件,您犯了几个错误。方案定义为,而不是
[:alpha:]+

方案的
后面的部分不需要以
/
开头,这是
http:
和其他一些面向文件的方案所特有的。但是正则表达式的
[[:alpha:]+:
开头表明您的目标并不是限制自己使用
http:
。在这种情况下,所有可打印的ASCII字符都是有效的。即
中的所有内容
~
,或
[\x21-x7E]*
作为正则表达式


总而言之:
[[:alpha:][A-Za-z0-9+-.]*:[\x21-x7E]*

我认为,您应该构造To-URL属性,以匹配
http
URL,如中所述。特别是,您的正则表达式与
不匹配。另外,可能会有
&
#
…在旁注中,ereg函数在PHP5.3中被弃用。您可能已经想使用preg_u*了。