Est-ce que quelqu'un connaît une fonction Exemple: P> devrait entraîner une matrice avec les membres suivants: p> Le fait que les caractères sont enveloppés dans des guillemets simples les éparpre de être des séparateurs. p> points bonus pour une solution pouvant traiter des caractères em> wrapper p> une solution PHP natif serait préféré, mais je ne pense pas qu'une telle chose existe! p> p> rapide et facile d'exploser () code> comme fonction similaire pouvant ignorer les caractères de séparateur qui sont enfermés dans une paire de caractères arbitraires (par exemple, citations)?
3 Réponses :
Il y a une recette pour <5,3 sur la page liée. P> str_getcsv code> ( $ str, '/') code> p>
Alors passez ensuite un caractère différent sous forme d'enceinte.
ne compte pas. Il renvoie array ([0] => ceci est [1] => une chaîne [2] => Ça devrait être [3] => éclaté. [4] => [5] => mais " 6] => ici ', [7] => et' non [8] => ici ') code>
Sent comme un bug PHP pour moi alors.
STR_GETCSV CODE> n'accuse que d'un caractère de boîtier qui se produit au début d'une section fractionnée (c'est-à-dire au début d'une chaîne ou juste après un délimiteur). Pas un bug (il gère correctement CSV), mais pas bon pour cette question.
str_getcsv ($ str, '/', "'"); 3rd Param est le boîtier.
Quelque chose de très proche avec preg_split: http: // fr2 .php.net / manuel / fr / fonction.preg-split.php # 92632 p>
Il gère plusieurs caractères d'emballage et plusieurs caractères de délimitation. P>
Bravo @ Greg0ire, cela a l'air bien mais a toujours besoin d'un peu de travail. Je vais essayer de le changer à mes besoins avec ma faible connaissance des regextes.
Ceci est presque impossible avec solution simple pour un seul type de citation: p> cette fonction aura toutes sortes de problèmes Si vous transmettez certains caractères spéciaux (\ ^ -], selon http: //www.regular- expressions.info/reference.html ), vous devez donc échapper à celles-ci. Voici une solution générale qui échappe aux caractères spéciaux de regex et peut suivre plusieurs types de guillemets séparément: p> (Notez que je garde toutes les variables entre crochets pour minimiser les besoins de l'évanouissement - En dehors des crochets, il y a environ deux fois plus de caractères spéciaux.) p> Si vous vouliez utiliser] comme citation, vous avez probablement voulu utiliser [comme la citation correspondante, mais je vais partir Ajout de cette fonctionnalité comme un exercice pour le lecteur. :) p> p> Preg_split code>, car vous ne pouvez pas dire au milieu de la chaîne si vous êtes entre guillemets ou non. Cependant, preg_match_all code> peut faire le travail.
ESSION: Si les citations ne sont pas équilibrées, cette fonction vous jettera assez pour les faire équilibrer.
Je viens de découvrir que la fonction preg_quote code> est probablement une meilleure façon d'échapper aux caractères dans des expressions régulières.
duplicaté possible de PHP exploser le chaîne, mais traiter les mots dans des citations comme un mot unique