Remplacer une chaine de charactères

Remplacer une chaine de charactères - PHP - Programmation

Marsh Posté le 19-09-2008 à 00:35:10    

Bonjour à tous,
 
Je cherche à remplacer dans une variable donnée une chaine de charactères par une autre.
 
Jusque là facile, il suffit d'utiliser la fonction str_replace me direz vous, oui, mais dans le cas suivant ou $message provient en fait d'un fichier xml encodé en iso-8859 ça marche pas :
 
<?php
$message = "le ciel est bleu mais je vois des éclairs au loin";
$strTmp = str_replace("des éclairs au loin", "", $message);
echo $strTmp;
?>
 
Comment je dois faire pour qu'il me vire convenablement le é?
 
J'ai essayé avec chr(233) à la place de é, j'ai essayé avec utf8_encode etc, mais je dois mal m'y prendre, please help ! :)


Message édité par hellfire_lz le 19-09-2008 à 00:35:25
Reply

Marsh Posté le 19-09-2008 à 00:35:10   

Reply

Marsh Posté le 19-09-2008 à 01:28:55    

Ton é est sous quelle forme ? entité HTML ? si tu fais un html_entity_decode ? ça te virera tous les &*eacute;


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 19-09-2008 à 07:58:03    

mmh quand je fais un echo de la variable j'ai bien un é à l'écran et quand j'injecte les variables dans ma base MySQL j'ai bien des é également...
 
Pourtant le str_replace ne veut rien savoir, si je découpe la chaine de caratère en 2 (juste avant et après le é) j'arrive à tout remplacer (sauf le é), si j'inclus le é dans la chaine de caractère à remplacer ça marche plus du tout :/

Reply

Marsh Posté le 19-09-2008 à 09:50:51    

Alors c'est l'encoding du fichier PHP qui n'est pas bon :)

Reply

Marsh Posté le 19-09-2008 à 11:35:40    

Je bricole ça comment? :)

Reply

Marsh Posté le 19-09-2008 à 11:37:16    

Dans ton éditeur, vérifie quel encoding est utiliser pour sauvegarder les .php

Reply

Marsh Posté le 19-09-2008 à 19:07:37    

yes! c'est ça, merci beaucoup :)

Reply

Marsh Posté le 19-09-2008 à 19:55:04    

Question subsidiaire, le ™ pose soucis cette fois :D
 
tous les caractères spéciaux passent mais ce fichu ™ veut pas...
 
J'ai lu des trucs comme quoi c'est parce que ce caractère existe pas en ISO-8859, mais il se trouve bien dans mon xml d'origine qui est encodé en ISO-8859 justement...
 
des idées pour arriver à le remplacer?

Reply

Marsh Posté le 19-09-2008 à 21:50:36    

bon j'ai trouvé... au lieu de mettre remplacer "™" par "" j'ai mis le caractère crado que j'avais en résultat (™ pour ne pas le citer) et je l'ai remplacé par "" et ça ça marche :lol:

Reply

Marsh Posté le 20-09-2008 à 00:29:28    

Bonsoir,
 
J'ai exactement le même problème sauf que ma chaîne de caractère provient d'une base de données MYSQL. Le nom est bien stocké avec des accents dans la base et il apparaît également à l'écran avec ces accents.
Voila ma partie de code qui est censée supprimer tous mes accents :

Code :
  1. for ($i=1;$i<=2;$i=$i+1){
  2. $chaine=$conv[$i];
  3. $conv[$i]=utf8_encode($conv[$i]);
  4. $chaine=strtolower($chaine);
  5.    
  6.     $accents = Array("/é/", "/è/", "/ê/", "/ç/", "/à/", "/â/", "/î/", "/ï/", "/ù/", "/ô/" );
  7.     $sans = Array("e", "e", "e", "c", "a", "a", "i", "i", "u", "o" );
  8.    
  9.     $chaine = preg_replace($accents, $sans,$chaine);   
  10.    
  11.    
  12.     $entre = array(' ', '?', '!', '.', ',', ':', "'", '&', '(', ')', '"','/');
  13.     $sortie = array('-', '-', '-', '-', '-', '-', '-', '-', '-', '-','-');
  14.     $chaine = str_replace($entre, $sortie, $chaine);
  15.    
  16.    
  17.     $modifchaine=true;
  18.     while($modifchaine==true)
  19.     {
  20.         $modifchaine=false;
  21.        
  22.         if(ereg('--',$chaine))
  23.         {
  24.             $chaine = str_replace('--','-',$chaine);
  25.             $modifchaine=true;       
  26.         }
  27.     }
  28. $conv[$i] = $chaine;
  29. }


J'ai essayé d'insérer la fonction utf8_encode() pour être dans le bon format, mais cela ne marche pas et là, je sèche.
Auriez-vous une idée d'où le problème provient?
Merci d'avance de vos réponses, JM


---------------
Mon vieux feedback :)
Reply

Marsh Posté le 20-09-2008 à 00:29:28   

Reply

Marsh Posté le 20-09-2008 à 08:05:22    

La nuit porte conseil.... :)
 

Code :
  1. $chaine=$conv[$i];
  2. $chaine=utf8_encode($chaine);
  3. $chaine=strtolower($chaine);


 
J'initialisais la variable à traiter et ensuite j'appliquais la fonction utf8_encode sur la mauvaise variable...
Comme ca ça marche


---------------
Mon vieux feedback :)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed