有人向我建议,为了关闭一些“悬空”的HTML标签,我应该使用PHP的DOM扩展和loadHTML。
我已经尝试了一段时间,寻找教程,阅读this page,尝试各种各样的事情,但似乎无法弄清楚如何使用它来实现我想要的目标。
我有这个字符串:<div><p>The quick brown <a href="">fox jumps...
我需要编写一个关闭打开的HTML标记的函数。
在这里寻找起点。我通常可以快速解决问题。
答案 0 :(得分:2)
好的,http://htmlpurifier.org/怎么样? 另外http://www.bioinformatics.org/phplabware/internal_utilities/htmLawed/index.php
你能用Tidy吗? http://php.net/manual/en/book.tidy.php
答案 1 :(得分:2)
虽然我确信你可以让DOM做你想做的事情但我确信你会更好地使用Tidy。
答案 2 :(得分:2)
可以使用DOMDocument()&amp ;;在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&amp; 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;
?>
答案 3 :(得分:0)
我认为你遵循了错误的方法:你必须使用DOM的东西截断字符串,而不是截断它。
我就是这样做的: