Problème avec function ereg et preg_match

Petit nouveau ! | 1 Messages

19 févr. 2010, 11:18

Bonjour,

Voilà, dans un de mes fichier une fonction "ereg" était "depracated".
     if (ereg($code,$format) && defined($infos['const'].'_'.strftime($infos['ftime'], $timestamp)))
Je l'a change donc avec "preg_match".
La ligne me donne donc :
     if (preg_match($code,$format) && defined($infos['const'].'_'.strftime($infos['ftime'], $timestamp)))
Maintenant un message d'erreur apparait dans mon admin :

Code : Tout sélectionner

Warning: preg_match() [function.preg-match]: No ending delimiter '%' found in C:\wamp\www\osCSS_1.2.2_RC\admin\includes\functions\general.php on line 1525
Je suis un grand débutant et je voudrais que quelqu'un puisse m'aider si il toruve la solution pour ce "Warning".
Que faut-il ajouter de plus à cette ligne ?

Merci d'avance

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

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
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

19 févr. 2010, 12:23

Modération :
Afin d'obtenir plus de réponses, le sujet a été déplacé dans un forum plus approprié.

Merci de prendre le temps de lire les règlements
ainsi que l'intitulé de chaque forum avant de poster un nouveau sujet.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer