php regex для удаления HTML

Прежде чем начать, strip_tags () не работает.

Теперь,

У меня есть некоторые данные, которые нужно разбирать, проблема в том, что мне нужно избавиться от всего HTML, который был сформирован очень странно. теги выглядят так: (обратите внимание на пробелы)

< p > blah blah blah < / p > < a href= " link.html " > blah blah blah < /a > 

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

У кого-нибудь есть идея?

(Мне действительно нужно просто сесть и научиться регулярным выражениям однажды)

Есть ли

 preg_replace('/<[^>]*>/', '', $content) 

Работа?

strip_tags() будет работать, если вы используете html_entity_decode() для переменной перед strip_tags()

 <?php $text = '< p > blah blah blah < / p > < a href= " link.html " > blah blah blah< /a >'; echo strip_tags(html_entity_decode($text)); ?> 

Решение, которое не является безупречным, но будет работать за то, что вы разместили:

 s/<[^>]*>//g 

Отформатировано странно? Это верно, правда, правда? В этом случае я бы не касался его регулярными выражениями. Примеры того, как это может пойти не так, и почему это плохая идея, это легион. Вместо этого я бы использовал HTML Tidy, чтобы, например, очистить ненужное пустое пространство.

http://ca3.php.net/strip_tags – это то, что вам нужно.

Попробуйте это и дайте мне знать.

 <?php $text = '< p > blah blah blah < / p > < a href= " link.html " > blah blah blah< /a >'; echo strip_tags($text); echo "\n"; echo strip_tags($text, '<p><a>'); ?>