2011-03-20 7 views
0

Nous apprenons tous les jours. Je suis tombé sur ce script et bien que je sois nouveau à regex aimerais savoir si c'est un script sûr à utiliser et ce qu'il fait réellement. Je suppose qu'il supprime les liens cliquables dans un texte, mais que je voudrais en savoir plus.Que fait cette regex?

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

Ce type de question ne doit pas être demandé ici dans stackoverflow mais plutôt dans la section codereview. . – kushalbhaktajoshi

Répondre

1

La première ligne fait étonnamment peu. Il recherche les préfixes uri actifs de script, mais les remplace par eux-mêmes. Cela semble être une tentative malavisée de sécurité.

Les trois appels preg_replace suivants remplacent http:// URL ou simplement www.* noms de domaine et adresses [email protected]. Mais il ne les supprime pas, il les remplace par des liens HTML cliquables.

+0

Liens HTML vers où et à quoi? –

+0

Vous transmettez ce texte source de fonction avec un '... www.google.com ...' littéral quelque part. Et cette fonction le remplace par ['.. www.google.com ..'] (http://www.google.com). C'est un remplacement 1: 1, il ne génère pas d'URL/liens différents. – mario

+0

MERCI. Deviner. Bien sûr avec votre aide. –