Recuperer un string dans ... un string

mariostar27 Messages postés 442 Statut Membre -  
Archeus01 Messages postés 1681 Statut Membre -
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 1681 Statut Membre 452
 
Regex sur les caractères ' et ". Non?
0
mariostar27 Messages postés 442 Statut Membre 26
 
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 1681 Statut Membre 452
 
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