先看一下
list of differences
在手册中的posix和pcre表达式之间。
如果表达式不复杂,一般来说,这意味着只需在表达式周围加上分隔符就可以避免
$pattern
参数,并切换到使用
preg
功能系列。在您的情况下,您可以这样做:
function makeClickableLinks($text)
{
$text = preg_replace('/(((f|ht){1}tp:\/\/)[-a-zA-Z0-9@:%_\+.~#?&\/\/=]+)/i',
'<a href="\\1">\\1</a>', $text);
$text = preg_replace('/([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_\+.~#?&\/\/=]+)/i',
'\\1<a href="http://\\2">\\2</a>', $text);
$text = preg_replace('/([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3})/i',
'<a href="mailto:\\1">\\1</a>', $text);
return $text;
}
注意
/
图案周围的字符,以及
i
标记在分隔符之后。我很快测试了这个,它适用于一个基本的URL。你可能想更彻底地测试它。