Impossible de remplacer un espace par un - même avec str_replace

Impossible de remplacer un espace par un - même avec str_replace - PHP - Programmation

Marsh Posté le 01-06-2013 à 15:01:44    

Salut,
 
J'ai une chaine de type "Bonjour ça va bien." qui me vient d'un flux XML.
Je veux remplacer les espaces par des tirets.
Je fais un str_replace(' ','-',$chaine);
Ca fonctionne … mais pas pour toutes mes chaines.
Pour certaines ça fait "Bonjour-ça va bien." ou "Bonjour-ça va-bien".
 
Je soupçonnais que ce soit un autre type d'espace (insécable, fabulation ou autre).
Mais j'ai tout testé : remplacer \t ou   ou même en copiant collant un tab, mais ça ne fonctionne pas.
 
Ma dernière piste : c'est un souci de charset/encodage de caractère. Mais comment trouver le code hexa / le caractère exact que c'est ?
Avez vous déjà eu ce genre de soucis ?
 
Merci


---------------
Bha ouais mais bon, m'enfin quoi...
Reply

Marsh Posté le 01-06-2013 à 15:01:44   

Reply

Marsh Posté le 02-06-2013 à 11:32:49    

Effective, certains "espaces" n'en sont pas forcément. Tu peux utiliser la fonction ord() pour le vérifier :

Code :
  1. function AfficheListCar($str)
  2. {
  3.    $iSize = streln($str);
  4.    for($i = 0; $i < $iSize; $i++) {
  5.        echo ord($str{$i})." ";
  6.    }
  7. }


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 02-06-2013 à 15:42:15    

Yes merci c'est ce que j'avais fini par faire et il m'a sorti deux caractères pour cet espace : '194' et '160'. Aucune idée de ce à quoi ce caractère correspond mais du coup j'ai fait un str_replace(chr('194').chr('160),'-',$chaine);
C'est un peu crâde mais ça marche !


---------------
Bha ouais mais bon, m'enfin quoi...
Reply

Marsh Posté le 02-06-2013 à 21:39:48    

En fait pour le code 160 c'est un espace insécable (cf. page Wiki) ;)
Le caractère 194 ça a l'air d'être un  [:er dehy:3]


Message édité par Soileh le 02-06-2013 à 21:40:03

---------------
And in the end, the love you take is equal to the love you make
Reply

Marsh Posté le 03-06-2013 à 09:45:35    

Bizarre ! En tout cas merci !


---------------
Bha ouais mais bon, m'enfin quoi...
Reply

Sujets relatifs:

Leave a Replay

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