2009-12-12 1 views
0

Я сделал это выражение, чтобы удалить все теги (включая теги только с пробелами) на странице.preg_replace, чтобы удалить пустые теги, но сохранить конец blockquotes

$content = preg_replace('/<[^\/>]*>([\s]?)*<\/[^>]*>/', '', $content); 

Он работал лакомство, пока не приходилось иметь дело с содержанием, как это ...

<blockquote> 
<p >foo bar</p> 
</blockquote> 
<p ><a href="image.jpg" rel="lightbox" title=""><img title="image" src="image.jpg" /></a><br /></p> 

и выводит его как ...

<blockquote> 
<p >this is a test for the pluggin</p> 
<p ><a href="image.jpg" rel="lightbox" title=""><img title="image" src="image.jpg" /></a><br /></p> 

Таким образом, удаляя </blockquote>.

Я почесываю голову на этом и не могу заставить его работать. Может ли кто-нибудь увидеть очевидное решение, кроме указания того, какие теги он должен форматировать? Я также должен сказать, что он форматирует «the_content» на посту Wordpress.

ответ

3

Регулярные выражения и HTML не соответствуют друг другу, так как HTML не является регулярным синтаксисом, и нет конца краевых случаев и gotchas. Вам будет лучше использовать анализатор HTML, например this one, и осмотреть/обработать объект DOM.

0

Вы также можете взглянуть на HTML Purifier, который является более продвинутым, чем простой HTML-дом, если вы обнаружите, что он не получает все теги.