0

PHP DOMDocument クラスを使用してページのコンテンツの内容を変更しようとしていますが、うまくいきません。

<?php
$d = new DOMDocument();
$c = get_the_content();
$d->loadXML($c);
echo $d->saveHTML();
?>

echo すると$c、ページは通常どおり印刷されますが、上記のように何も印刷されません。ここで何が欠けていますか?

4

1 に答える 1

0

loadHTML()の代わりに使用する必要がありloadXML()ます。オプションで、不要なタグを防止します。

<?php
$d = new DOMDocument();
$c = get_the_content();
$d->loadHTML($c, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
echo $d->saveHTML();
?>

との重要な違いthe_content()get_the_content()、「the_content」を介してコンテンツを渡さないことです。これは、get_the_content()動画の自動埋め込みやショートコードの展開などを行わないことを意味します。

また、autopしません。ただし、フィルターを簡単に適用できます。

$c = apply_filters('the_content', get_the_content());

のオプションはloadHTML()、Libxml >= 2.7.7 (PHP >= 5.4.0 以降) でのみ使用できることに注意してください。

于 2015-05-11T16:18:19.063 に答える