【发布时间】:2010-08-05 10:01:53
【问题描述】:
我使用这个函数来创建指向可点击链接的 URL,但问题是当 URL 中有一些 Unicode 字符时,它只会在该字符之前变成可点击链接...
功能:
function clickable($text) {
$text = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)',
'<a class="und" href="\\1">\\1</a>', $text);
$text = eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_\+.~#?&//=]+)',
'\\1<a href="http://\\2">\\2</a>', $text);
$text = eregi_replace('([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3})',
'<a href="mailto:\\1">\\1</a>', $text);
return $text;
}
如何解决这个问题?
【问题讨论】:
-
尝试用字符类
:digit:、:alpha:和:lower:和:upper:等替换硬编码的a-zA-Z? -
(旁注) 自 PHP 5.3.0 起,POSIX Regex functions 已被弃用。考虑改用PCRE family。