begin process at 2012 05 28 13:57:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

Bug dans modification de chaine de caracteres


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Bug dans modification de chaine de caracteres

mercredi 26 janvier 2011 à 16:05:21 | Bug dans modification de chaine de caracteres

eikichi

Membre Club
Bonjour a tous,

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 ";"

Code PHP :
function addSpace($str){
	//print_r($str);
	for ($i=0;$i<count($str); $i++){
		//echo'<br>'.$str[$i].'<br>';
		print_r($str[$i]);
		if (($str[$i] == ";")&&($str[$i+1] == ';')){
			print_r($str[$i]);
			//echo'<br>'.$str[$i].'<br>';
			$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?

Merci pour vos réponses ^^










mercredi 26 janvier 2011 à 16:44:02 | Re : Bug dans modification de chaine de caracteres

ludwig59

Réponse acceptée !
Bonjour

Je pense que la fonction str_replace est suffisante.
Code PHP :
$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);
mercredi 26 janvier 2011 à 16:58:30 | Re : Bug dans modification de chaine de caracteres

TychoBrahe

Salut,

mais le souci est que les champs vides (comme le ;; du debut de la chaine) ne seront pas pris en compte


Et bien justement si.

Code :
-> php -r 'var_dump(explode(";", ";;98 Crater Drive;Denver;CO;80301 "));'
array(6) {
  [0]=>
  string(0) ""
  [1]=>
  string(0) ""
  [2]=>
  string(15) "98 Crater Drive"
  [3]=>
  string(6) "Denver"
  [4]=>
  string(2) "CO"
  [5]=>
  string(6) "80301 "
}
mercredi 26 janvier 2011 à 17:27:59 | Re : Bug dans modification de chaine de caracteres

cod57

bonjour
pourquoi pas ?
A++

Code PHP :
<?php
function addSpace($str){

	
  $str =explode(";",$str);
  
  echo '<pre>';
  print_r($str);
	echo '</pre>';
  
  
  foreach ($str as $value){
  echo " ".$value;
  }                    
 
}

$chaine=";;98 Crater Drive;Denver;CO;80301"; 

echo addSpace($chaine);


?>
jeudi 27 janvier 2011 à 08:37:26 | Re : Bug dans modification de chaine de caracteres

LDDL

Bonjour,
Cela n'est t'il pas possible de charger directement ton fichier avec fgetcsv() ?
jeudi 27 janvier 2011 à 10:39:00 | Re : Bug dans modification de chaine de caracteres

TychoBrahe

Salut,

@LDDL : Le format vCard c'est pas du CSV en soit, j'ai un doute sur le fait que fgetcsv() soit le plus adapté.
jeudi 27 janvier 2011 à 14:40:21 | Re : Bug dans modification de chaine de caracteres

eikichi

Membre Club
@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.


Cette discussion est classée dans : code, chaine, caracteres, adresse, str


Répondre à ce message

Sujets en rapport avec ce message

Probleme de caracteres [ par LaurentKOogar ] Bonjour,Je lis un Flux XML et dans la recuperation des datas j'ai des caracteres qui pour moi sont totalement inconnu: Ã© => é Ã§ =>  çDon str_replace tableau [ par nashoy ] Bonsoir, J'aimerai remplacer des caractère donnés dans un tableau à "key" comme on dit...: function Conversion ($chaine) { $conversion = array( ':)' question [ par refkaben ] J'ai posé une question concernant l'affichage de resultat d'une requete select, quelques champs me paraissent sur ma page normalement d'autre Non.Il y RETIRER DU CODE HTML d'une chaine de caratere [ par loupile ] Bonjour; j'ai une variable description dans laquelle il peut y avoir du code html.comment faire pour supprimer le code html quand je veux afficher ma Émoticons BBcode [ par kegi ] Bonjour,je désire formater une chaine pour remplacer [1],[2],[3]...[170] par des images .ex:$chaine = "Bonjour [25] !";=> $chaine = "Bonjour <img bord PHP-Barcode 128 [ par freednk ] Bonjour.Je cherche une solution pour pouvoir afficher plusieurs etiquettes sur une page prete pour l'impression avec les information ( par ex: 1710 au enregistrer une chaine de caracteres dans un stream [ par Yossi ] Bonjour, je voudrais savoir comment enregistrer une chaine de caracteres dans un stream sans passer par un fichier. Ce que je veux c'est le contra Chaine de caracteres [ par bizzard4 ] Bonjour !J'ai une formulaire avec un input qui prend le chemin d'une image en local.. Le resultat est par exemple : C:\easyphp\www\news\images\test.jp Problème avec les chaines de caractères [ par nisaloncaje ] bonjour à tous :j'ai le problème suivant en php :j'ai une chaine de caractères $str. Cette chaine peut contenir deux sous chaines : $ss_str et $ss_str C'est quoi se code ? [ par thekid23 ] À quoi sert le code pouvez vous me le décrir svp :     $i = 0; // str[X]     $j = 0; // tpl[X][]          $delim = false;     $len = strlen($str);    


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,685 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales