par
zeus » 19 févr. 2010, 11:57
preg_match() utilise la syntaxe PCRE, qui dit, entre autre, que les patterns doivent être délimités. Cela signifie que, dans le pattern, tu indiques le début et la fin du pattern avec un caractère quelconque (usuellement, on utilise le slash "\", mais je préfère le dièse "#")
Exemple :
avec ererg (PECL), pour capturer une chaine complète, tu utilisais le pattern suivant :
ereg('(.*)', $subject)
avec preg_match (PCRE), pour la même capture, tu dois rajouter le délimiteur avant et après
preg_match('#(.*)#', $subject)
En quelques mots, pour t'expliquer pourquoi, c'est parce que la syntaxe PCRE permet d'utiliser toute une série de flag qui permettent de rendre tes expressions régulières beaucoup plus puissantes.
Mais si tu veux en savoir plus, je te redirige sur l'excellent site d'un ViPHP :
http://www.lumadis.be/regex/index.php
Et plus particulièrement son tutoriel sur les expressions régulières PCRE :
http://www.lumadis.be/regex/tuto_pcre.php
preg_match() utilise la syntaxe PCRE, qui dit, entre autre, que les patterns doivent être délimités. Cela signifie que, dans le pattern, tu indiques le début et la fin du pattern avec un caractère quelconque (usuellement, on utilise le slash "\", mais je préfère le dièse "#")
Exemple :
avec ererg (PECL), pour capturer une chaine complète, tu utilisais le pattern suivant : [php]ereg('(.*)', $subject)[/php]
avec preg_match (PCRE), pour la même capture, tu dois rajouter le délimiteur avant et après [php]preg_match('#(.*)#', $subject)[/php]
En quelques mots, pour t'expliquer pourquoi, c'est parce que la syntaxe PCRE permet d'utiliser toute une série de flag qui permettent de rendre tes expressions régulières beaucoup plus puissantes.
Mais si tu veux en savoir plus, je te redirige sur l'excellent site d'un ViPHP : http://www.lumadis.be/regex/index.php
Et plus particulièrement son tutoriel sur les expressions régulières PCRE : http://www.lumadis.be/regex/tuto_pcre.php