Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2301 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Replacer un mot dans un texte avec des accents?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] Replacer un mot dans un texte avec des accents?

n°818211
Leffe Trip​le
Posté le 09-08-2004 à 16:08:48  profilanswer
 

Bonjour,  
 
J'utilise la fonction preg_replace() pour mettre un mot en gras dans un texte. Grâce à l'option "i", elle est bien insensible à la casse, mais je ne trouve pas comment faire pour qu'elle soit également insensible aux accents.
 
Voilà le code que j'utilise:

Code :
  1. preg_replace("/(".$mot." )/i", "<b>$1</b>", $texte);


 
Si j'ai

$mot = "léon";

et

$texte = "Je m'appelle Léon..."

, il n'y a pas de problème, mais si j'ai

$mot = "leon"

le mot n'est pas remplacé?
 
Comment faire pour que ça marche aussi avec les accents, mais sans les remplacer? (MySQL le fait car lorsqu'on cherche "%leon%" elle renvoie tous les textes où apparaît leon, léon, LéOn etc...
 
edit: Le message s'envoie tout seul si on fait TAB+enter  :fou:


Message édité par Leffe Triple le 09-08-2004 à 16:13:19
mood
Publicité
Posté le 09-08-2004 à 16:08:48  profilanswer
 

n°818224
deliriumtr​emens
sic transit intestinal...
Posté le 09-08-2004 à 16:29:02  profilanswer
 

Ben je ne crois pas que tu puisses gérer cela directement.
 
J'aurais tendance à faire un petite fonction du genre

Code :
  1. function accents($chaine)
  2.     {
  3.     return (strtolower(strtr( $chaine, "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ",
  4.     "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn" ) ));
  5.     }


 
Ensuite du fait
$mots=accents($mots) et ensuite tu applique ton preg_replace à $mots.
 
(Dans ce cas tu n'as plus besoin du "i" puisque c'est déjà traité par la fonction, mais bon tu fais comme tu le sens, hein :) )

n°818243
Leffe Trip​le
Posté le 09-08-2004 à 16:43:29  profilanswer
 

deliriumtremens a écrit :

Ben je ne crois pas que tu puisses gérer cela directement.
 
J'aurais tendance à faire un petite fonction du genre

Code :
  1. function accents($chaine)
  2.     {
  3.     return (strtolower(strtr( $chaine, "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ",
  4.     "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn" ) ));
  5.     }


 
Ensuite du fait
$mots=accents($mots) et ensuite tu applique ton preg_replace à $mots.
 
(Dans ce cas tu n'as plus besoin du "i" puisque c'est déjà traité par la fonction, mais bon tu fais comme tu le sens, hein :) )


 
 
Merci de ta réponse,
 
J'avais aussi pensé à faire quelque-chose comme ça, mais alors le problème c'est qu'il va me remplacer
 
"Je m'appelle Léon" par "Je m'appelle leon" et non "Je m'appelle Léon"...
 
De plus cette fonction ne fonctionnera que si j'applique ta fonction à $mot et à $texte, auquel cas mon texte sera sans accents ni majuscules...  :(  
 
Personne n'a d'autre idée ???

n°818460
Leffe Trip​le
Posté le 09-08-2004 à 21:07:03  profilanswer
 

Bon finalement en me creusant un peu la tête j'ai trouvé un moyen pour le faire...
 

Code :
  1. function str_gras($mot, $phrase) {
  2. $mot = strtolower(strtr( $mot, "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ", "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn" ));
  3. $recherche = array("a","e","i","o","u","y","c","n" );
  4. $remplacement = array("[a|à|á|â|ã|ä|å]{1}","[e|è|é|ê|ë]{1}","[i|ì|í|î|ï]{1}","[o|ò|ó|ô|õ|ö|ø]{1}","[u|ù|ú|û|ü]{1}","[y|y]{1}","[c|ç]{1}","[n|ñ]{1}" );
  5. $mot = str_replace($recherche, $remplacement, $mot);
  6. return eregi_replace("($mot)", "<b>\\1</b>", $phrase);
  7. }


 
Ce n'est pas extrêmement propre mais pour le moment ça a l'air de bien fonctionner... Si quelqu'un veut proposer une alternative il est le bienvenu.  :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Replacer un mot dans un texte avec des accents?

 

Sujets relatifs
Valider un formualire automatiquement par php ou javascriptExtraire une date d'un texte
[PHP] Return d'un objet qui foiredébutant en PHP a besoin d'aide !!Problème avec un formulaire ! ! ! !
[VBA]Passer d'une zone de texte à une autre (résolu)Verification Javascript ou PHP !?
Ajouter des jours à une date en PHP ?php/mysql avec dreamweaver
[MFC] Affichage dans une fenetre texte 
Plus de sujets relatifs à : [PHP] Replacer un mot dans un texte avec des accents?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR