这是一个创建于 4671 天前的主题,其中的信息可能已经有所发展或是发生改变。
[code]
$return = preg_replace(array("/(?<=[^\]A-Za-z0-9-=\"'\\/])(https?|ftp|qqdl|thunder|bdhd|qvod|gopher|news|telnet|mms){1}:\/\/([A-Za-z0-9\/\-_+=.~!%@?#%&;:$\\()|]+)/ies","/([\n\s])www\.([a-z0-9\-]+)\.([A-Za-z0-9\/\-_+=.~!%@?#%&;:$\[\]\\()|]+)((?:[^,\t\s\n\r]*)?)/is","/(?<=[^\]A-Za-z0-9\/\-_.~?=:.])([A-Za-z0-9\-_.]+)@([A-Za-z0-9\-_][.][A-Za-z0-9\-_.]+)/is"),array("urlcut('\\1://\\2')","\\1<a href=\"http://www.\\2.\\3\\4\" target=\"_blank\">www.\\2.\\3\\4</a>","<a href=\"mailto:\\1@\\2\">\\1@\\2</a>"),$return);
echo $return;
[/code]
这个正则换下来之后中文URL就悲剧了,对含有中文的URL有木有好方法?
4 条回复 • 1970-01-01 08:00:00 +08:00
|
|
1
lizheming 2012-03-09 10:20:51 +08:00
我搅得直接匹配头尾不就挺好的么?干嘛需要这么麻烦啊……
|
|
|
3
liyandong 2012-03-09 10:49:37 +08:00
唉唉。还是用笨方法把。。。[A-Za-z0-9\/\-_+=.~!%@?#%&;:$\\()\[\]\.\x80-\xff|]+
|
|
|
4
lizheming 2012-03-09 11:06:25 +08:00
@ liyandong 唔,我的理解就是中间中(.*?)替代了,前面和后面跟你差不多,匹配https|http。。。 还有.com|.net|.org|.me什么什么的...
|