6
votes

Comment puis-je supprimer un élément HTML et son contenu à l'aide de REGEX

J'ai une carte d'identité divi à supprimer d'une sortie qui ressemble à xxx

Comment puis-je supprimer cette div et tout ce qui lui est à l'aide de PHP et de regex?

Merci.


2 commentaires

Pouvez-vous plus élaborer? Est-ce sous la forme d'une chaîne?


Connaissez-vous le nom d'identification et / ou le nom de la classe? Ou y a-t-il des identifiants distincts de l'ID et / ou de la classe afin de ne pas supprimer toutes les divs de tomber dans cette description? Ou voulez-vous supprimer toutes les divs et leur contenu?


3 Réponses :


13
votes

La réponse simple est que vous ne le faites pas. Vous utilisez plutôt l'un des nombreux analyseurs HTML de PHP. Les regexes sont un moyen floconneux de manipulation de HTML.

qui étant dit que vous pouvez faire cela: xxx

mais beaucoup choses peuvent mal avec ça. Par exemple, si cela contient un div: xxx

vous allez vous retrouver avec: xxx

comme la réégalité Arrêtez-vous au premier . Et non, vous ne pouvez rien faire pour résoudre ce problème (avec des expressions régulières) de manière cohérente.

fait avec un analyseur, il ressemble plus à ceci: xxx


1 commentaires

+1. Ça vaut la peine de commenter que (a) si l'élément n'existe pas, alors $ élément est null et la commande -> removechecild () Fail avec une erreur fatale, et (b) Vous pouvez utiliser / peut-être utiliser le @ pour provoquer le -> loaderhtml () pour faire taire les notifications de tous les avis sur HTML malformé: < code> @ $ doc-> loadhtml ($ html);



1
votes

Je ne sais pas sur PHP, mais vous pouvez remplacer / ] *> / avec rien.


0 commentaires

0
votes

PHP est le côté du serveur et la sortie provient du serveur. Vous ne pouvez pas simplement le sortir? Ou essayez-vous de le cacher? Si c'est le cas, dans une feuille de style, dites simplement #ithis {affichage: aucun} .

Si la chaîne est un retour de certaines fonctions dans PHP que vous n'avez pas écrit et que vous ne voulez pas muck avec ce code, vous devez écrire une regex très difficile pour tenir compte de la syntaxe de Div Netd Div. Sortie, etc. Je recommanderais d'utiliser un analyseur (peut-être ceci ZEND Framework composant ) pour vous aider à sortir. Je l'ai utilisé plusieurs fois pour quelque chose de similaire. Bien que si vous ne connaissez pas du tout avec ZF, vous voudrez peut-être essayer autre chose.


0 commentaires