2011-03-20 105 views
0

我們每天都在學習。我遇到了這個腳本,雖然我是新來的正則表達式想知道它是一個安全的腳本使用和它實際上做了什麼。這個正則表達式做什麼?

從我認爲它刪除文本中的可點擊鏈接,但會知道更多。

function new_regex($text = '') 
{ 
    $text = preg_replace('#(script|about|applet|activex|chrome):#is', "\\1:", $text); 
    $ret = ' ' . $text; 
    $ret = preg_replace("#(^|[\n ])([\w]+?://[\w\#$%&~/.\-;:=,[email protected]\[\]+]*)#is", "\\1<a href=\"\\2\" target=\"_blank\">\\2</a>", $ret); 

    $ret = preg_replace("#(^|[\n ])((www|ftp)\.[\w\#$%&~/.\-;:=,[email protected]\[\]+]*)#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:\\[email protected]\\3\">\\[email protected]\\3</a>", $ret); 
    $ret = substr($ret, 1); 
    return $ret; 
} 
+1

這種類型的問題一定不能在這裏問stackoverflow,而應該在codereview部分詢問。 。 – kushalbhaktajoshi 2011-03-20 15:02:23

回答

1

第一行的確很少。它會查找活動腳本uri前綴,但會自行替換它們。這似乎是對安全問題的誤導性嘗試。

以下三個preg_replace調用替換爲http:// URL或只是www.*域名和[email protected]地址。但它不會刪除它們,它會用可點擊的HTML鏈接取代它們。

+0

HTML鏈接到哪裏或什麼? – 2011-03-20 15:06:02

+0

您可以將此函數源文本與文字「... www.google.com ...」在某個地方進行傳遞。這個函數用['.. www.google.com ..'](http://www.google.com)替換它。這是一個1:1的替代品,它不會生成不同的網址/鏈接。 – mario 2011-03-20 15:07:43

+0

謝謝。弄清楚了。當然有你的幫助。 – 2011-03-20 15:10:51

相關問題