Comment faire avec des expressions régulière pour remplacer dans une chaine,
les emails & liens par autant de * par exemple ?
ex :
source : "hello, write to zozo@zozo.com and look http://toto.zozo.com !!"
au final : "hello, write to ************* and look ******************** !!"
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Christophe PEREZ
Le Sat, 24 Jan 2004 18:24:22 +0000, Fred a écrit:
ex : source : "hello, write to and look http://toto.zozo.com !!" au final : "hello, write to ************* and look ******************** !!"
Bon, je sais que ça ne répond pas exactement à la question puisque le nombre de "*" ne correspond pas à la chaine initiale mais : preg_replace( array("|[^ ]*@[^ ]*|","|http:[^ ]*|"), array("***************","***************") , $chaine ); fonctionne.
Si tu tiens vraiment à avoir le même nombre de caractères, rien qu'avec une regexp, je ne sais pas faire (mais j'aimerais bien que quelqu'un nous montre).
Par contre, en 2 commande, tu peux faire : preg_match("|([^ ]*@[^ ]*).*(http:[^ ]*)|", $chaine, $result); preg_replace( array("|".$result[1]."|","|".$result[2]."|"), array(str_repeat("*",strlen($result[1])),str_repeat("*",strlen($result[2]))), $chaine );
A condition dans les 2 cas que tes emails et url ne contiennent ni "|" ni " ".
-- Christophe PEREZ Écrivez moi sans _faute !
Le Sat, 24 Jan 2004 18:24:22 +0000, Fred a écrit:
ex :
source : "hello, write to zozo@zozo.com and look http://toto.zozo.com !!"
au final : "hello, write to ************* and look ******************** !!"
Bon, je sais que ça ne répond pas exactement à la question puisque le
nombre de "*" ne correspond pas à la chaine initiale mais :
preg_replace(
array("|[^ ]*@[^ ]*|","|http:[^ ]*|"),
array("***************","***************") , $chaine
);
fonctionne.
Si tu tiens vraiment à avoir le même nombre de caractères, rien qu'avec
une regexp, je ne sais pas faire (mais j'aimerais bien que quelqu'un nous
montre).
Par contre, en 2 commande, tu peux faire :
preg_match("|([^ ]*@[^ ]*).*(http:[^ ]*)|", $chaine, $result);
preg_replace(
array("|".$result[1]."|","|".$result[2]."|"),
array(str_repeat("*",strlen($result[1])),str_repeat("*",strlen($result[2]))),
$chaine
);
A condition dans les 2 cas que tes emails et url ne contiennent ni "|" ni " ".
ex : source : "hello, write to and look http://toto.zozo.com !!" au final : "hello, write to ************* and look ******************** !!"
Bon, je sais que ça ne répond pas exactement à la question puisque le nombre de "*" ne correspond pas à la chaine initiale mais : preg_replace( array("|[^ ]*@[^ ]*|","|http:[^ ]*|"), array("***************","***************") , $chaine ); fonctionne.
Si tu tiens vraiment à avoir le même nombre de caractères, rien qu'avec une regexp, je ne sais pas faire (mais j'aimerais bien que quelqu'un nous montre).
Par contre, en 2 commande, tu peux faire : preg_match("|([^ ]*@[^ ]*).*(http:[^ ]*)|", $chaine, $result); preg_replace( array("|".$result[1]."|","|".$result[2]."|"), array(str_repeat("*",strlen($result[1])),str_repeat("*",strlen($result[2]))), $chaine );
A condition dans les 2 cas que tes emails et url ne contiennent ni "|" ni " ".
-- Christophe PEREZ Écrivez moi sans _faute !
P'tit Marcel
Christophe PEREZ écrivit news::
Si tu tiens vraiment à avoir le même nombre de caractères, rien qu'avec une regexp, je ne sais pas faire (mais j'aimerais bien que quelqu'un nous montre).
Si tu tiens vraiment à avoir le même nombre de caractères, rien
qu'avec une regexp, je ne sais pas faire (mais j'aimerais bien que
quelqu'un nous montre).
Si tu tiens vraiment à avoir le même nombre de caractères, rien qu'avec une regexp, je ne sais pas faire (mais j'aimerais bien que quelqu'un nous montre).