REGEX: saisir tout jusqu'à un mot spécifique
Ex: <a><strike>example data in here</strike></a>
Je veux tout à l'intérieur de la balise a, jusqu'à la fin
/<a>([^<]*)</a>/
Cela fonctionne quand il n'y a pas de balises supplémentaires dans la balise <a>
, mais que faire s'il y en a?
Je veux savoir si vous pouvez dire à saisir tout à [^</a>]
au lieu de [^<]
seulement.
Faire avec /<a>(.*)</a>/
ne fonctionne pas bien. Parfois, je reçois tout dans la balise <a>
et d'autres fois, je reçois des tonnes de lignes incluses dans cet appel.
1 réponses
/<a>(.*?)<\/a>/
Devrait fonctionner. L' ? le rend paresseux, donc il saisit le moins possible avant de faire correspondre la partie </a>
. mais l'aide . signifie qu'il correspond tout jusqu'à ce qu'il trouve </a>
. Si vous voulez pouvoir faire correspondre les lignes, vous pouvez utiliser ce qui suit avec preg_match
/<a>(.*?)<\/a>/s
Le " s " à la fin met l'expression régulière en mode "ligne unique", ce qui signifie la . caractère correspond à tous les caractères, y compris les nouvelles lignes. Voir autres modificateurs