Preg_match, pourquoi cet espace

Hello les gens,

Je ne sais pas si c’est quelque chose que j’ai raté dans l’apprentissage des expressions régulières mais j’ai un petit soucis que je n’arrive pas à contourner.

Je cherche à insérer des repères dans un fichier texte, par exemple, je voudrais insérer ‘^’ devant chaque occurrence du mot chien ou chat.

Le problème que j’ai rencontré dans ma boucle c’est que j’aimerais qu’il ne me balise pas un mot qui est déjà balisé, donc dans mon expression régulière au lieu de mettre (chien|chat) j’ai mi ^^ pour qu’il ne prenne pas les mots avec un accent devant.

Le soucis : lorsque je met (chien|chat) pas de problème il me met l’accent devant le mot, par contre si je met avec le contrôle [^^] il me rajoute un espace entre l’accent et le mot lorsque j’insère ‘^’ dans le texte … du coup il s’arrête toujours sur le même mot et ça commence a me désespérer un peu :confused:

Dans l’espoir d’avoir été clair, avis aux amateurs de problèmes de noobs en php :stuck_out_tongue:
Merci par avance,
Liberto
Edité le 16/10/2008 à 11:16

Gné?

Tu ne peux pas utiliser preg_replace?

Voire preg_replace_callback si tu dois faire un travail derrière?

Tu fais quoi au juste (file du code php!)

Re-bonjour,

En fait le preg_match (allez savoir pourquoi) prenais le dernier caractère d’espacement en même temps que le mot recherché, avec un str_replace j’ai donc enlevé cet espace et le tour est joué !

			$match[0] = str_replace("\n", "", $match[0]); //pour enlever un retour à la ligne
			$match[0] = str_replace(" ", "", $match[0]); //pour enlever un espace

Merci pour ton aide :wink:

Bonne journée à tous !

Edit : Comment met-on le sujet en résolu ? =/
Edité le 16/10/2008 à 11:21

Fait voir ce que tu as fait avant ta modif.