FORUM Tom's Hardware » Programmation » PHP & MySQL & ASP » Remplacement d'un caractére conditionnel...
 

Remplacement d'un caractére conditionnel...

78 utilisateurs inconnus
Ajouter une réponse



 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : Remplacement d'un caractére conditionnel...
 
Plus d'informations

Bonjour à tous.
 
Je vous expose mon problème.
 
Je dispose d'une chaîne de caractères de ce type :  
 

Code :
  1. 79507,-110,101,2,19073,'1.Enfer,le cauchemar',17431,'skipi',1393,'LGA²',704


 
J'envoie cette chaîne dans une bdd en utilisant comme séparateur la virgule. Or dans cet exemple, le 6 éme champ comprend lui même une virgule, et je ne n'ai pas trouver le moyen de la remplacer. Je souhaite a la place utiliser son équivalent héxadécimal (,).
 
 
Voici mon code...
 

Code :
  1. $export_sql=str_replace("'", "", "$export_sql" );
  2. list($idVillage, $coordX, $coordY, $peuple, $idVillage2, $nomVillage, $idJoueur, $pseudo, $idAlliance, $nomAlliance, $population) = explode(",", "$export_sql" );


 
 
Merci d'avance pour vos lumiéres ;)
 

Profil : Pointeur
Plus d'informations

regex :o

Plus d'informations

Merci pour l'explication...

zeb
Profil : Modérateur libre
Plus d'informations

Spa une explication, c'est une soluce :o
Si, si, la soluce t'est bien donnée par KangOl.
 
RegEX = Regular Expression
Ce qui donne en français Expression Régulière.
C'est une traduction mot-à-mot, plus ou moins erronée.
D'aucun préfère la locution Expression Rationnelle.
 
Maintenant, .... Goooooooooogle


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Plus d'informations

putain vous etes lourds....
 
j'ai compris et j'ai lu ce cours  
 
http://cyberzoide.developpez.com/php4/regex/
 
mais j'ai pas exactement compris pour la soluce
 
Quand on formule une demande polis, courtoise et bien expliqué, la moindre des choses et de rendre l'appareil, et pas coller un mot suivie d'un smyley d'énervement!
 
je m'en vais sur un forum ou les gens sont plus polis...


Message édité par dtom le 03-03-2007 à 00:39:48
Profil : Pointeur
Plus d'informations

et tu voulais pas que je te ponde la regex non plus  
 
cela t'aurais servi a quoi ?
de plus, c'est pas avec ce simple exemple qu'on saurait te faire une regex complete qui fonctionne dans tous tes cas.
 
et pour ta gouverne, le smiley n'etait pas la pour dire "tu me fais ch*er" mais bien pour dire "pardi". En gros, la regex est la première solution qui me viens a l'esprit. et vu ta ligne a scanner, la regex ne doit pas etre bien difficile.
 
 
mais au fait, elle viens d'ou cette ligne ? ne me dit pas qu'elle viens d'un csv tout de meme !
si c'est le cas : http://be.php.net/manual/en/function.fgetcsv.php
c'est le premier truc que j'ai trouver, il doit exister des classes pour encapsuler ca tout bien comme il faut. le cas échéant, c'est pas difficile d'en coder une simple...

zeb
Profil : Modérateur libre
Plus d'informations

Bah, ta question reste posée. "Bien expliqué", ceci reste subjectif. Mais tu étais poli et courtois, reste-le.
 
Quant aux réponses reçues par un modérateur qui lui doit se taper des questions mal posées, malpolies et même pas courtoises, forcément elles peuvent être lapidaires, sans chercher à mal.
 
Bon, avis à ceux qui répondront à l'ardennais : il connaît les regex, le php, et cette $ù#@ de virgule l'emmerde. (En plus il est aimable comme un sanglier ;) )
 
Edit: GRILLED!!


Message édité par zeb le 03-03-2007 à 00:44:03

---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Plus d'informations

Si je suis pas (plus) aimable, c'est du fait répété de ce genre de réponses sans aucunes explications. A chaque fois il me balançais le nom d'une fonction^^
 
Sinon, non ce n'est pas du CSV, mais c'est une ligne extraite d'un fichier .SQL où j'ai retiré les premiers caractéres "INSERT INTO...".

G.M.G.V.S.O.
Profil : Modo matériel
Plus d'informations

Bin tu fais un str_replace juste avant sur la (ou les) chaine(s) pouvant poser problème :ange:
 
cf: http://fr2.php.net/str_replace


---------------
SPAM & WAREZ = Ban!
Ultimate Boot CD | Memtest+
Mon bar préféré à Lyon ! | Bijoux Fantaisie de Créateur !
Plus d'informations

pas si simple car ma virgule est un séparateur de champs...

G.M.G.V.S.O.
Profil : Modo matériel
Plus d'informations

Oui mais ton champ tu l'as bien de façon isolé AVANT ta requete non ?


Message édité par boub popsy team le 03-03-2007 à 17:13:45

---------------
SPAM & WAREZ = Ban!
Ultimate Boot CD | Memtest+
Mon bar préféré à Lyon ! | Bijoux Fantaisie de Créateur !
Plus d'informations

il me faudrais reussir a dire :
 
- SI une virgule se trouve entre deux quotes, alors on la modifie.
 
C'est pas plus compliqué que ca littéralement^^

Profil : Pointeur
Plus d'informations

bha regex :spamafote:

Plus d'informations

j'ai tenté ca, sans succés
 

Code :
  1. $rech=ereg_replace('\'.+,+\'',',',$chaine);

Plus d'informations

voici un code plus logique, mais le problème c'est que je remplace tout, et que je ne récupére pas le contenu...

Code :
  1. $rech=ereg_replace('\'+.+,+.+\'',',',$chaine);


Message édité par dtom le 03-03-2007 à 22:53:05
Je me la pête
Profil : /!\ Docteur - PDG
Plus d'informations

Ce qu'il te faut, c'est plutôt : si une virgule est précédée d'une ou plusieurs lettres, elle est remplacée par son code. Ca devrait te faciliter la vie. Par ex :

Code :
  1. $chaine = preg_replace('!([A-Za-z]+)(,){1}!', '$1,', $chaine);


---------------
.: La Pipicy Team :love: :.
Plus d'informations

Merci pour la réponse, mais admettons qu'un joueur met une étoile avant la virgule?


Message édité par dtom le 03-03-2007 à 23:44:30
G.M.G.V.S.O.
Profil : Modo matériel
Plus d'informations

Je redis ce que j'ai dis plus haut:
 
Qd ton joueur rentre son info tu l'as en dehors de toute requete SQL donc tu peux remplacer en dur toutes les virgules sans te prendre la tete ....


---------------
SPAM & WAREZ = Ban!
Ultimate Boot CD | Memtest+
Mon bar préféré à Lyon ! | Bijoux Fantaisie de Créateur !
Je me la pête
Profil : /!\ Docteur - PDG
Plus d'informations

A ce moment-là, faut que tu listes tous les caractères possibles, ou plus simple que tu exclues le ' devant une virgule.


---------------
.: La Pipicy Team :love: :.
Plus d'informations

mais boub... je ne suit pas maître des données, puisqu'elles proviennent d'un export sous la forme d'un sql... donc je suis obligé de faire avec.

Je me la pête
Profil : /!\ Docteur - PDG
Plus d'informations
n°28451
04-03-2007 à 00:14:11
Masquer