Мне было предложено, чтобы закрыть некоторые «болтающиеся» HTML-теги, я должен использовать расширение DOM PHP и загрузитьHTML.
Я пытался какое-то время, искал учебники, читал эту страницу , пробовал разные вещи, но не могу понять, как использовать ее для выполнения того, что я хочу.
У меня есть эта строка: <div><p>The quick brown <a href="">fox jumps...
Мне нужно написать функцию, которая закрывает открытые теги HTML.
Просто ищите отправную точку здесь. Обычно я могу быстро разобраться.
Может быть сделано с классом DOMDocument в PHP с использованием методов DOMDocument :: loadHTML () и DOMDocument :: normalizeDocument ().
<?php $html = '<div><p>The quick brown <a href="">fox jumps'; $DDoc = new DOMDocument(); $DDoc->loadHTML($html); $DDoc->normalizeDocument(); echo $DDoc->saveHTML(); ?>
Выведет:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> <html><body><div><p>The quick brown <a href="">fox jumps</a></p></div></body></html>
Оттуда, просто substr & strpos удалите html, который вам не нужен, например:
<?php $html = '<div><p>The quick brown <a href="">fox jumps'; $DDoc = new DOMDocument(); $DDoc->loadHTML($html); $DDoc->normalizeDocument(); $html = $DDoc->saveHTML(); # Remove Everything Before & Including The Opening HTML & Body Tags. $html = substr($html, strpos($html, '<html><body>') + 12); # Remove Everything After & Including The Closing HTML & Body Tags. $html = substr($html, 0, -14); echo $html; ?>
Хотя я уверен, что вы могли бы заставить DOM делать то, что вы хотите, я вполне уверен, что вам будет лучше с Tidy .
Хорошо, как насчет http://htmlpurifier.org/ ? Также http://www.bioinformatics.org/phplabware/internal_utilities/htmLawed/index.php
Можете ли вы использовать Tidy? http://php.net/manual/en/book.tidy.php
Я думаю, что вы следуете неправильному подходу: вы должны использовать материал DOM для усечения строки, а не после ее усечения.
Вот как я это сделаю: