Recuperer un string dans ... un string

Fermé
mariostar27 Messages postés 391 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 21 août 2015 - Modifié par mariostar27 le 13/02/2014 à 09:28
Archeus01 Messages postés 1571 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 9 juin 2022 - 13 févr. 2014 à 12:32
Bonjour,

J'ai un algorithme que je n'arrive pas a résoudre. Je souhaiterez récupérer les chaines de caractères dans une chaine de caractères.

Je m'explique. J'ai ceci :

$s = "Il lui dit : 'bonjour l\'amie' et elle répondit \"salut l'ami\"";


Et je souhaiterai obtenir la réponse sous forme de tableau comme ceci :

array(4) {
  0 => Il lui dit : 
  1 => 'bonjour l\'amie'
  2 => et elle répondit 
  3 => "salut l'ami"
}


L'exemple n'est pas terrible, mais cette algorithme me servira pour les condition WHERE d'une requête SQL. exemple :

$sWhere = "u.nom = 'Dominique' AND u.prenom = \"Dupont\" AND u.pole = 'l\'ivil'"


Il faudrait me retourner un tableau du genre :

array(3) {
  0 => u.nom = 
  1 => 'Dominique'
  2 =>  AND u.prenom = 
  3 => "Dupont"
  4 =>  AND u.pole = 
  5 => 'l\'ivil'
}


Voila. Merci d'avance et bonne chance ^^. Cela fait une semaine que je suis dessus :'(
gwennael

3 réponses

Archeus01 Messages postés 1571 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 9 juin 2022 450
13 févr. 2014 à 11:28
Regex sur les caractères ' et ". Non?
0
mariostar27 Messages postés 391 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 21 août 2015 26
13 févr. 2014 à 11:39
Oui j'ai essayé, mais pas évident. Il faut le faire sur les caractère ' et " sauf ci c'est \' et \" a l'intérieur des chaine de caractères, bref j'ai pas trouvé
0
Archeus01 Messages postés 1571 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 9 juin 2022 450
13 févr. 2014 à 12:32
1) Formater ta phrase car impossible de distinguer le ' devant bonjour du ' devant ami . Avec par exemple str_replace avant de tout concaténer dans ta chaine $s. (si vraiment ta chaine vient directement comme ça, tu dois pouvoir faire quelque chose avec preg_replace pour formater tout ça mais ça me semble compliquer)


Tu te retrouves avec une phrase du stype :
$str="Il lui dit : \"bonjour l'amie\" et elle repondit \"salut l'ami\"";


2) $chars = preg_split("#\"#", $str);
0