Recuperer un string dans ... un string [Fermé]

Signaler
Messages postés
391
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
21 août 2015
-
Archeus01
Messages postés
1576
Date d'inscription
mercredi 3 octobre 2007
Statut
Membre
Dernière intervention
24 septembre 2019
-
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

4 réponses

Messages postés
1576
Date d'inscription
mercredi 3 octobre 2007
Statut
Membre
Dernière intervention
24 septembre 2019
307
Regex sur les caractères ' et ". Non?
Messages postés
391
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
21 août 2015
25
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é
Messages postés
1576
Date d'inscription
mercredi 3 octobre 2007
Statut
Membre
Dernière intervention
24 septembre 2019
307
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);