Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 28-08-2009 12:18:36

neojick
Membre
Date d'inscription: 13-04-2008
Messages: 223
Site web

[PHP 5.2.0] preg_replace et accent : Résultat étonnant

Bonjour, dans un script PHP, je veux remplacer des mots par des liens vers les fiches de ces mots. Tout est ok, tout fonctionne sauf un petit bug sur les mots accentués.

En simplifiant le tout, voilà un exemple :

Code:

        
$texte = 'martin martine martinez gagné gagnée gagnées pétard pétarde';
        
$texte = preg_replace('#\bmartin\b#', 'ok1', $texte);
$texte =  preg_replace('#\bgagné\b#', 'ok2', $texte);
$texte =  preg_replace('#\bgagnée\b#', 'ok3', $texte);
$texte =  preg_replace('#\bpétard\b#', 'ok4', $texte);

//Affiche : ok1 martine martinez gagné ok2e ok2es ok4 pétarde
echo $texte;

En gros, je veux que :
- "martin" (et pas "martine" et "martinez") soit remplacé par "ok1"
- "gagné" (et pas "gagnée" et "gagnées" soit remplacé par "ok2"
- "gagnée" soit remplacé par "ok3"
- "pétard" (et pas "pétarde") soit remplacé par "ok4"

Le code ci-dessus me semble bon. Les \b \b permettent d'éviter justement que martine et martinez soit changés en ok1.

Pour "martin" et "pétard", tout se passe comme je peux.

Mais pour "gagné", ça déconne. Le mot qui devrait être pris en compte ne l'est pas. Pire, les mots qui ne devraient pas être pris en compte (grâce au \b \b), le sont !

Quelqu'un a une idée, une piste ? Merci d'avance.


Chan IRC de ZF en français : zftalk-fr

Hors ligne

 

#2 28-08-2009 15:37:41

Eureka
Membre
Date d'inscription: 18-07-2009
Messages: 81

Re: [PHP 5.2.0] preg_replace et accent : Résultat étonnant

Il me semble que ça ne marchait pas dans toutes les situations, mais si ça résoud ton problème tant mieux : http://fr3.php.net/manual/fr/function.p … .php#89471

Hors ligne

 

#3 28-08-2009 15:47:02

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [PHP 5.2.0] preg_replace et accent : Résultat étonnant

Au pif : t'as essayé en rajoutant le modificateur /u dans ton expression ? C'est dans les cas utf-8..


----
Gruiiik !

Hors ligne

 

#4 28-08-2009 15:49:34

neojick
Membre
Date d'inscription: 13-04-2008
Messages: 223
Site web

Re: [PHP 5.2.0] preg_replace et accent : Résultat étonnant

@Eureka : J'ai déjà testé, et ça me vire le caractère qui précède ainsi que celui qui suit.
@Norky : Je le mets ou le /u ?


Chan IRC de ZF en français : zftalk-fr

Hors ligne

 

#5 28-08-2009 15:55:17

Eureka
Membre
Date d'inscription: 18-07-2009
Messages: 81

Re: [PHP 5.2.0] preg_replace et accent : Résultat étonnant

le modificateur 'u' se place comme dans l'exemple que tu viens de lire sur php.net, à savoir après le second délimiteur (toi tu utilises le caractère # en guise de délimiteur, comme d'autres utilisent /, @, ...).

Hors ligne

 

#6 28-08-2009 16:12:52

neojick
Membre
Date d'inscription: 13-04-2008
Messages: 223
Site web

Re: [PHP 5.2.0] preg_replace et accent : Résultat étonnant

Ça semble... fonctionner ! Merci merci merci beaucoup !


Chan IRC de ZF en français : zftalk-fr

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages