PHP регулярное выражение для удаления HTML - PullRequest
10 голосов
/ 17 апреля 2009

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

сейчас,

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

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

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

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

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

Ответы [ 6 ]

28 голосов
/ 17 апреля 2009

ли

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

работа

12 голосов
/ 07 августа 2012

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));
?>
2 голосов
/ 17 апреля 2009

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

s/<[^>]*>//g
1 голос
/ 17 апреля 2009

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

0 голосов
/ 17 апреля 2009

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

<?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>');
?> 
0 голосов
/ 17 апреля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...