-5

我知道这并不是一个新问题,但我不是 preg_replace 函数的专家。我曾经在互联网上找到此代码将 URL 等转换为可点击的链接,但从 PHP 5.3 开始,我收到“已弃用”通知并且不知道如何修复它......我尝试添加 / 分隔符,但没有成功。有任何想法吗?

function clickLinks($sText) {
 $sText = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_+.~#?&//=]+)',
 '<a href="\1" target="_blank"><font color="black">\1</font></a>', $sText);
 $sText = eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_+.~#?&//=]+)',
 '\1<a href="http://\2" target="_blank"><font color="black">\2</font></a>', $sText);
 $sText = eregi_replace('([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3})',
 '<a href="mailto:\1"><font color="black">\1</font></a>', $sText);
return $sText;
}
4

2 回答 2

0

但要帮忙。只需在模式的开头和结尾添加分隔符,我使用 # 并使用 \ 转义模式中的任何分隔符,因此引擎知道它不是分隔符,所以 \#:

$sText = preg_replace('#(((f|ht){1}tp://)[-a-zA-Z0-9@:%_+.~\#?&//=]+)#',
 '<a href="\1" target="_blank"><font color="black">\1</font></a>', $sText);
于 2013-10-31T22:51:53.507 回答
0

eregi 和 preg 之间的主要区别是 preg 基于 perl 的正则表达式,unix 的 eregi 正则表达式和 preg_* 函数必须以分隔符开头,例如'/'

$regex  = '/[a-z]/'; 
preg_replace($regex, $replacement, $string)

preg_replace

于 2013-10-31T22:55:01.543 回答