Прежде чем начать, 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>'); ?>