【发布时间】:2021-01-12 16:12:22
【问题描述】:
我正在使用 Smarty 修饰符将纯文本链接转换为正确的超链接,为此我使用 Smarty 修饰符,因为它适用于使用用户内容的网站,其中仅允许某些区域具有超链接。
这是修饰符:
function smarty_modifier_dolink($text)
{
$text = preg_replace('#(script|about|applet|activex|chrome):#is', "\\1:", $text);
$ret = ' ' . $text;
$ret = preg_replace("#(^|[\n ])([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*)#is", "\\1<a href=\"\\2\" target=\"_blank\" rel=\"nofollow\">\\2</a>", $ret);
$ret = preg_replace("#(^|[\n ])((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*)#is", "\\1<a href=\"http://\\2\" target=\"_blank\" rel=\"nofollow\">\\2</a>", $ret);
//$ret = preg_replace("#(^|[\n ])([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i", "\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>", $ret);
$ret = substr($ret, 1);
return $ret;
}
?>
修改器的代码已在另一个网站上共享。它工作正常,但当明文链接在括号中时不起作用,任何帮助将不胜感激,谢谢!
【问题讨论】:
-
http:// 不安全且不再广泛使用 - 使用 https。 regex101.com/isitregex101.com 了解更多关于正则表达式的信息。