J'ai un petit probleme avec la fonction substr_replace.
Dans la fonction addSpace que vous pourrez voir ci-dessous, je ne parviens pas à rajouter un espace entre deux ";". Pour etre plus explicite, voici un exemple de chaine de caractere que je traite:
;;98 Crater Drive;Denver;CO;80301
il s'agit d'une adresse stockée dans une vcard, les ";" indiquent un nouveau champ d'adresse (;adresse;complement;ville;Etat;code postal)
je desire stocker chaque champ dans un tableau, je le fais donc avec explode mais le souci est que les champs vides (comme le ;; du debut de la chaine) ne seront pas pris en compte et je décide donc de rajouter un espace (ou un caractère spécial) entre ces deux ";"
function addSpace($str){
//print_r($str);
for ($i=0;$i<count($str); $i++){
//echo'
'.$str[$i].'
';
print_r($str[$i]);
if (($str[$i] == ";")&&($str[$i+1] == ';')){
print_r($str[$i]);
//echo'
'.$str[$i].'
';
$newstr = substr_replace($str,' ',$i);
}
}
return $newstr;
}
Mais cela ne marche pas et seuls les deux premiers caracteres (ici: ;;) de la chaine sont renvoyes.
Mon test conditionnel doit etre faux mais je ne vois pour le moment pas d'autre alternative. :(
Quelqu'un aurait-il une suggestion qui pourrait m'éclairer?
Je pense que la fonction str_replace est suffisante.
$chaine = ";;98 Crater Drive;Denver;CO;80301 ";
/* remplace tous les double points virgules par des points virgules séparés par un espace */
$chaine = str_replace(";;","; ;",$chaine);
@Ludwig59: merci pour la réponse, tout fonctionne.
@TychoBrahe: merci aussi a toi, j'aurais du penser au var_dump pour le debug, je vais voir ça de plus près.