Ceci est l'expression régulière utilisée pour "shortcodes" dans WordPress (un pour l'ensemble de la balise, d'autres pour les attributs).WordPress: Problème avec le raccourci regex
return '(.?)\[('.$tagregexp.')\b(.*?)(?:(\/))?\](?:(.+?)\[\/\2\])?(.?)';
$pattern = '/(\w+)\s*=\s*"([^"]*)"(?:\s|$)|(\w+)\s*=\s*\'([^\']*)\'(?:\s|$)|(\w+)\s*=\s*([^\s\'"]+)(?:\s|$)|"([^"]*)"(?:\s|$)|(\S+)(?:\s|$)/';
Il parse des trucs comme
[foo bar="baz"]content[/foo]
ou
[foo /]
Dans le WordPress trac, ils disent qu'il est un peu imparfait, mais mon principal problème est qu'il ne prend pas en charge shortcodes l'intérieur les attributs, comme dans
[foo bar="[baz /]"]content[/foo]
parce que la regex arrête la principale shortcode à la première apparition d'un support de fermeture, donc dans l'exemple, il rend
[foo bar="[baz /]
et
"]content[/foo]
montre tel qu'il est.
Y a-t-il un moyen de modifier l'expression rationnelle afin qu'elle contourne toute occurrence de [
avec ]
et son contenu lorsqu'il se produit entre l'étiquette d'ouverture ou l'étiquette de fermeture automatique?
Où trouverions-nous cette regex? Cela aiderait si nous pouvions voir exactement comment il est utilisé. –
Peu importe, je l'ai trouvé: http://xref.yoast.com/2.8/wp-includes/shortcodes.php.source.html#l45 –