Page 1 sur 1

Suppression d'une chaine de caractères avec ereg_replace

Posté : 21 mars 2008, 01:29
par Zen
Pour supprimer une partie d'une chaine de caractères $chaine, j'ai pensé à utiliser la fonction ereg_replace de la manière suivante:

Je définis les sous chaines de début et de fin qui délimitent la zone que je veux supprimer:

$chainedebut= "<tr>\n<td class=\"aligntop bold\>Dur"
$chainefin= "PDF</p>"

et je fais:
$chaine = eregi_replace($chainedebut.$chainefin, "", $chaine);

mais visiblement, la sous chaine complète n'est pas trouvée.
Je crois qu'il manque quelque chose dans mon expression régulière pour préciser qu'il peut y avoir n'importe quels caractères entre $chainedebut et $chainefin, mais je ne connais pas la syntaxe ("." est censé signifier n'importe quel caractère, mais c'est aussi l'opérande de concaténation des chaines!)

Posté : 21 mars 2008, 09:39
par Ryle
Le point désigne effectivement n'importe quel caractère d'une expression régulière à condition d'être utilisé dans un masque, c'est à dire en tant que chaine de caractère :) Lorsque tu fais $chainedebut.$chainefin, tu te contente de demander à php de concaténer les deux valeurs.

Si tu procède ainsi : $chainedebut.'.'.$chainefin, php concatainera les 3 valeurs pour obtenir le masque suivant : "<tr>\n<td class=\"aligntop bold\>Dur.PDF</p>" (auquel il te manque une guillemet pour fermer l'attribut class).
Le point sera alors considéré comme l'occurence de n'importe quel caractère (mais une seule occurence, si tu en veux plus il faut le préciser avec un +, un *, un {x,y} ...)