Je suis en train de développer un système de template et de rencontrer quelques problèmes.Preg_match_all avec des correspondances imbriquées
Le projet est de créer des documents HTML avec [@tags] dans ceux-ci. je pouvais utiliser str_replace (je rigole en boucle tous les remplacements posible), mais je veux pousser un peu plus loin ;-)
Je veux autoriser les balises imbriquées, et permettre à des paramètres de chaque tag:
[@title|You are looking at article [@articlenumber] [@articlename]]
Je voudrais obtenir les résultats suivants avec preg_match_all:
[0] title|You are looking at article [@articlenumber] [@articlename]
[1] articlenumber
[2] articlename
Mon script diviser le | pour les paramètres. La sortie de mon script sera quelque chose comme:
<div class='myTitle'>You are looking at article 001 MyProduct</div>
Le problème que je vais avoir est que je ne suis pas exprerienced avec regex. Al mes paterns résultats presque ce que je veux, mais ont des problèmes avec les params imbriqués.
\[@(.*?)\]
S'arrêtera à l'adresse] à partir de articlenumber.
\[@(.*?)(((?R)|.)*?)\]
Est plus comme ça, mais il n'attrape pas l'articlenumber; https://regex101.com/r/UvH7zi/1
J'espère que quelqu'un pourra m'aider! Merci d'avance!
Je crois qu'il est temps d'utiliser un analyseur html approprié, comme http://simplehtmldom.sourceforge.net/;) Voici un résumé sur les modèles récursifs pcre, mais cela va déraper très rapidement http: // www.rexegg.com/regex-recursion.html. –