Php 这个正则表达式做什么?

Php 这个正则表达式做什么?,php,regex,Php,Regex,我们每天学习。我遇到了这个脚本,虽然我对regex是新手,但我想知道它是否是一个安全的脚本,以及它的实际功能 从现在开始,我想它会删除文本中的可点击链接,但我想知道更多 function new_regex($text = '') { $text = preg_replace('#(script|about|applet|activex|chrome):#is', "\\1:", $text); $ret = ' ' . $text; $ret = preg_replac

我们每天学习。我遇到了这个脚本,虽然我对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;
}
函数new\u regex($text='')
{
$text=preg_replace(“#(脚本|关于| applet | activex | chrome):#is',“\\1:”,$text);
$ret=''.$text;
$ret=preg\u replace(“#(^ |[\n])([\w]+?:/[\w\\\$%&~/.\-:=,?@\[\]+]*)是“,“\\1”,“$ret”);
$ret=preg_replace(“#(^|[\n])((www.ftp)\.[\w\\\$%&-/.\-]:=,?@\[\]+]*)是“,”\\1“,$ret);
$ret=preg\u replace(“#(^ |[\n])([a-z0-9&\-\.]+?)@([\w\-]+\.([\w\-\.]+\.*[\w]+)\i”,“\\1”,$ret);
$ret=substr($ret,1);
返回$ret;
}

第一行做得出奇地少。它查找活动脚本uri前缀,但将其替换为自己的前缀。这似乎是一种误导性的安全尝试


以下三个preg_replace调用替换
http://
url,或者只替换
www.*
域名和
xyz@email
地址。但它不会删除它们,而是用可点击的HTML链接替换它们。

此类问题不能在stackoverflow中提出,而应该在codereview部分提出。指向何处或何处的HTML链接?您通过文本
传递此函数源文本。。。www.google.com…
。此函数将其替换为。这是一个1:1的替换,它不会生成不同的URL/链接。实际上,第一个从任何
脚本:
关于:
小程序:
activex:
浏览器:
URL中删除尾随冒号。因此,这些被有效地隐藏在后面的处理语句中。@ridgerunner:这就是我的想法,但是替换字符串是
“\1:”
意味着它将
重新添加。我已经试过了,没有效果。但这仍然是关于它的用途的最合理的解释。