2011-03-20 12 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

答えて

1

第1行目は驚くほどです。これは、アクティブなスクリプティングuri接頭辞を探しますが、それらを自分自身に置き換えます。それはセキュリティの何かに誤った試みがあるようです。

次の3つのpreg_replace呼び出しは、http://個のURLを置換するか、またはwww.*個のドメイン名と[email protected]個のアドレスを置き換えます。しかし、それらは削除されず、クリック可能なHTMLリンクに置き換えられます。

+0

HTMLはどこにリンクしていますか? –

+0

この関数のソーステキストを '... www.google.com ... 'というリテラルで渡します。この機能は[.. .. www.google.com ..](http://www.google.com)に置き換えられます。これは1:1の置換であり、異なるURL /リンクを生成しません。 – mario

+0

ありがとうございます。理解した。もちろんあなたの助けを借りて。 –

関連する問題