J'essaie de travailler avec des expressions régulières en utilisant PHP pour atteindre les éléments suivants:
Je suis intéressé à obtenir un tableau avec les agrumes
Les règles sont:
* La liste des agrumes est entre parenthèses
* Les agrumes sont séparés par ",", mais pourraient également être séparés par "" seulement.
J'ai essayé: p> mais je ne peux pas l'obtenir, j'ai essayé plusieurs expressions sans résultats p> une aide? P> p>
3 Réponses :
Voici une suggestion. Premièrement, analyser la chaîne entre la parenthèse pour obtenir votre liste. Ensuite, vous pouvez essayer d'utiliser str_replace () , à changer les espaces aux virgules. Enfin, utilisez enfin l'explosion () pour convertir la chaîne séparée de virgule maintenant en une matrice. Le seul problème serait si l'un des articles a un espace de son nom. P>
Essayez Démo P>
Travail en trouvant Paren (puis Correspondre Word, Continuer étend Demo2 P> (?: (?! ^) \ g [] + | \ ([] *) \ k \ w + code> p> p> p>
\ g code> correspondez le mot suivant.
Répéter jusqu'à ce que pas plus de mot p>
Merci, ça a bien fonctionné pour moi, mais pourriez-vous l'expliquer un peu? Salutations.
L'expression que vous avez essayé Pour obtenir les correspondances distinctes répétées, vous pouvez utiliser le Vous n'avez pas à faire la classe de caractères non gourmande si vous voulez vous assurer qu'il y a Une parenthèse de fermeture, vous pouvez utiliser un lookahead positif p> Démo Regex P> Notez que l'utilisation de [ \ h] + code> pourrait également correspondre à correspondre à des caractères si la virgule est facultative et que l'espace est toujours là , vous pouvez également utiliser Une autre option consiste à obtenir la correspondance d'abord, puis diviser sur Démo Regex | Démo PHP p> par exemple em> p> \ ([ [ \ s] *? (\ w +) [ \ s] * \ \ \) code> ne correspondra qu'un seul fruit éventuellement entre les espaces ou les virgules car n'est pas une répétition. \ g code> ancreur p> [ , \ s] *? code> comme la virgule ou le caractère blancheur ne peut pas se chevaucher avec correspondant aux caractères de mots \ w + code> p>
(?: code> groupe de capture
\ ( code> correspondez ( code> li>
(? = [^ ()] * \)) code> affirme ce qui est à droite est une parenthèse de fermeture li>
| code> ou li>
\ g (?! \ a) [ \ h] + code> affirme la position à la fin de la correspondance précédente, pas au début li>
ul> li>
) code> Fermer le groupe Non Capture Li>
\ k code> oublie ce qui est assorti li>
\ w + code> Match 1+ Word caractères LI>
ul> d'oranges p> p> ,? \ h + code> pour empêcher que P>
[ \ h +] Une virgule ou 1+ Whitspace Whitspace Whitspace P> Array
(
[0] => oranges
[1] => mandarins
[2] => lemons
)