2010-04-05 2 views
2

Люди знают, что кто-то знает о функции PHP для удаления непревзойденных тегов HTML из строки. например <div> This is a string <b> with an unmatched bold tag </div>. Если нет, то помогите мне увеличить его, возможно, у меня будет функция, которая подсчитывает количество открывающих тегов и соответствующие закрывающие теги. Если они даже не удаляют первый открывающий тег или больше закрывают теги, он удаляет последний тег?Удалить непревзойденные HTML-теги в строке

ответ

3

Я не верю, что есть функция. Вы хотите использовать что-то вроде tidy, который поддерживает PHP (PHP Tidy). Tidy очистит ваш HTML для вас. Кроме того, пожалуйста, не нужно, чтобы исправить это, используя регулярные выражения! ;)

Вот учебник от Zend, что говорит о том, прибирать свой HTML:

+0

Спасибо Vivin, что вы сохранили мой день, но это расширение имеет очень ограниченную документацию в руководстве по PHP, но учебник сделал это для меня! – Freeman

+0

Не беспокойтесь! Я рад, что это было полезно! –

0

Не придерживаясь какой-либо структуры правил, это не очень возможно. Если вы хотите следовать стандартам (т. Е. Не выходить из содержащего блока </b>), вы можете сделать просмотр с регулярным выражением, чтобы убедиться, что найдено </b> до </div>.

http://www.regular-expressions.info/lookaround.html

+0

За любовь к Богу. * НЕ используйте * регулярные выражения для анализа HTML! http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags –

+0

@Vivin Я бы хотел, чтобы люди перестали ссылаться на это. Шутки в сторону. В этом случае OP пытается обработать неверный HTML. Парсер там не поможет. – Matt

+0

Действительно. Я не совсем уверен, почему можно было бы поверить, что это не сработает, или это будет плохой идеей. И, Вивин, как вы думаете, что ваш драгоценный «аккуратный» использует для очистки HTML? Я гарантирую, что это не 'str_replace()'. – dclowd9901

Смежные вопросы