J'ai remarqué que le thème WP par défaut utilise force_balance_tags pour répertorier les extraits de publications. De cette façon, il ne provoque pas de casse majeure du langage HTML lorsque quelqu'un écrit un message comme
<div><b>This is an excerpt. <!--more--> and this is more text... </b></div>
Il va fermer les balises au lieu de tout mettre en gras et casser div.
Pourquoi la page wordpress normale ne le fait-elle pas par défaut, dans le thème par défaut? De cette façon, le contenu de la page brisée comme:
</div></div> now text is not where it's supposed to be </div> unmatched tags
ne causerait pas de comportement inattendu.
Était-ce un oubli ou y a-t-il des choses qui ne fonctionnent pas lorsque force est utilisé avec force_balance_tags sur les pages?
force_balance_tags()
n'est pas une fonction vraiment sûre. Il n’utilise pas d’analyseur HTML, mais un groupe d’expressions régulières potentiellement coûteuses. Vous ne devriez l'utiliser que si vous contrôlez aussi lelengthde l'extrait. Sinon, vous pourriez rencontrer des problèmes de mémoire ou des obscure bugs .
L'autre problème est le suivant: la fonction utilise deux listes d'éléments codées en dur pour les balises simples et les balises imbriquées. Il y a plusieurs endroits où WordPress utilise de telles listes et elles ne sont pas synchronisées. Ainsi, lorsque vous utilisez un élément qui ne fait pas partie de ces listes ou que vous modifiez son comportement d'imbrication, vous pouvez vous retrouver avec un balisage incorrect.