Expressions régulières en PHP ereg_replace, preg_replace et PCRE (Perl Compatible Regular Expressions)
Par placeoweb, mardi 8 janvier 2008 à 00:51 :: PHP :: #94 :: rss
Les expressions régulières, ha quelle bonne invention pour faciliter les modifications de chaines de caractères. Encore faut il savoir s'en servir...
<? header("Content-type: text/plain"); setlocale(LC_CTYPE, 'fr_FR.ISO-8859-1'); $in = "Les chiffres 1,2,3, les accents éêèëç, les spéciaux +-*/'<>&\"#()[] fin."; $pattern = array("[^a-z]{1,}", "([^[:alnum:]]{1,})", "/[^\w]/", "/[^[:alnum:]]/", "/[^[:alnum:]\+\-\/\*'.,<>()]/" ); $replace = "_"; $i=0; $test[] = eregi_replace($pattern[$i++],$replace,$in); $test[] = eregi_replace($pattern[$i++],$replace,$in); $test[] = preg_replace($pattern[$i++],$replace,$in); $test[] = preg_replace($pattern[$i++],$replace,$in); $test[] = preg_replace($pattern[$i++],$replace,$in); $pad = 50; echo str_pad("Test:Entrée:",$pad).$in."\n"; foreach( $test as $key => $result ) { echo str_pad("Resultat [$key] ($pattern[$key]):",$pad).$result."\n"; } ?> Retournera : Test:Entrée: Les chiffres 1,2,3, les accents éêèëç, les spéciaux +-*/'<>&"#()[] fin. Resultat [0] ([^a-z]{1,}): Les_chiffres_les_accents_les_sp_ciaux_fin_ Resultat [1] (([^[:alnum:]]{1,})): Les_chiffres_1_2_3_les_accents_les_sp_ciaux_fin_ Resultat [2] (/[^\w]/): Les_chiffres_1_2_3__les_accents_éêèëç__les_spéciaux________________fin_ Resultat [3] (/[^[:alnum:]]/): Les_chiffres_1_2_3__les_accents_éêèëç__les_spéciaux________________fin_ Resultat [4] (/[^[:alnum:]\+\-\/\*'.,<>()]/): Les_chiffres_1,2,3,_les_accents_éêèëç,_les_spéciaux_+-*/'<>___()___fin.
Si comme moi vous perdez les accents : lisez l'excellent tutoriel en Français sur Les expressions régulières PCRE (Perl Compatible Regular Expressions) Remarque importante: on a vu plus haut que les classes POSIX [:alpha:], [:alnum:], [:word:] ou PCRE \w comprennent les accentués, mais seulement si le bon jeu de caractères est installé sur le serveur, sinon, un setlocale(LC_CTYPE, 'fr_FR.ISO-8859-1') devrait résoudre le problème (ou bien 'fr_FR','fra_fra'...Vérifiez sur votre serveur les locales installées).
Commentaires
Aucun commentaire pour le moment.
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.