我们每天都学习。我遇到了这个脚本,虽然我是regex的新手,但我想知道它是否是一个安全的脚本以及它实际上的用途。
从我假设它删除了文本中的可点击链接,但是想知道更多。
function new_regex($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\">\\2</a>", $ret);
$ret = preg_replace("#(^|[\n ])((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*)#is", "\\1<a href=\"http://\\2\" target=\"_blank\">\\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;
}
答案 0 :(得分:1)
第一行的确令人惊讶。它查找活动脚本uri前缀,但用自己替换它们。这似乎是一种误导性的安全尝试。
以下三个preg_replace调用会替换http://
个网址或仅www.*
个域名和xyz@email
个地址。但它不会删除它们,而是用可点击的HTML链接替换它们。