相关疑难解决方法(0)

如何在没有HTML包装器的情况下保存DOMDocument的HTML?

我是下面的函数,我在努力输出DOMDocument而没有在内容输出之前附加XML,HTML,bodyp标签包装器.建议的修复:

$postarray['post_content'] = $d->saveXML($d->getElementsByTagName('p')->item(0));
Run Code Online (Sandbox Code Playgroud)

仅在内容中没有块级元素时才有效.但是,当它执行时,如下面的例子中的h1元素,saveXML的结果输出被截断为...

<p>如果你喜欢</ p>

我已经指出这篇文章可能是一种解决方法,但是我无法理解如何将它实现到这个解决方案中(参见下面的注释).

有什么建议?

function rseo_decorate_keyword($postarray) {
    global $post;
    $keyword = "Jasmine Tea"
    $content = "If you like <h1>jasmine tea</h1> you will really like it with Jasmine Tea flavors. This is the last ocurrence of the phrase jasmine tea within the content. If there are other instances of the keyword jasmine tea within the text what happens to jasmine tea."
    $d = new DOMDocument();
    @$d->loadHTML($content);
    $x = new DOMXpath($d);
    $count = …
Run Code Online (Sandbox Code Playgroud)

php serialization domdocument

106
推荐指数
9
解决办法
5万
查看次数

对html片段的loadHTML LIBXML_HTML_NOIMPLIED会生成错误的标记

将LIBXML_HTML_NOIMPLIED标志与html片段一起使用会生成错误的标记:

$str = '<p>Lorem ipsum dolor sit amet.</p><p>Nunc vel vehicula ante.</p>';
$doc = new DOMDocument();
$doc->loadHTML($str, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
echo $doc->saveHTML();
Run Code Online (Sandbox Code Playgroud)

输出:

<p>Lorem ipsum dolor sit amet.<p>Nunc vel vehicula ante.</p></p>
Run Code Online (Sandbox Code Playgroud)

我发现使用正则表达式可以解决这个问题,但这会破坏使用DOM的目的.我用几个版本的libxml和php测试了这个,最新的libxml 2.9.2,php 5.6.7(Debian Jessy).任何建议赞赏.

html php domdocument

17
推荐指数
2
解决办法
5959
查看次数

标签 统计

domdocument ×2

php ×2

html ×1

serialization ×1