这是一个创建于 4724 天前的主题,其中的信息可能已经有所发展或是发生改变。
[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
![lizheming](https://cdn.v2ex.com/avatar/c5ab/6ceb/5238_normal.png?m=1334932135) |
|
1
lizheming 2012-03-09 10:20:51 +08:00
我搅得直接匹配头尾不就挺好的么?干嘛需要这么麻烦啊……
|
![liyandong](https://cdn.v2ex.com/avatar/9d8d/f73a/4624_normal.png?m=1394032682) |
|
3
liyandong 2012-03-09 10:49:37 +08:00
唉唉。还是用笨方法把。。。[A-Za-z0-9\/\-_+=.~!%@?#%&;:$\\()\[\]\.\x80-\xff|]+
|
![lizheming](https://cdn.v2ex.com/avatar/c5ab/6ceb/5238_normal.png?m=1334932135) |
|
4
lizheming 2012-03-09 11:06:25 +08:00
@ liyandong 唔,我的理解就是中间中(.*?)替代了,前面和后面跟你差不多,匹配https|http。。。 还有.com|.net|.org|.me什么什么的...
|