php DOM Document提供的空字符串作为输入错误

时间:2017-10-19 07:04:32

标签: php wordpress domdocument

我已经意识到这个问题之前已经被问过,因为我已经完成了10多个类似的问题,但是我试图弄清楚我做错了什么。我一直收到错误警告:DOMDocument :: LoadHTML:提供空字符串作为输入。这是令人沮丧的,因为我甚至使用非常简单的表达式(通常是通用的,直接来自论坛而不编辑)得到这个错误,我意识到这是因为我是php和DOMDocument的新手。功能

这是一个返回错误的示例函数:

function breadcrumb_json() {
    $dom = new DOMDocument();
    $libxml_previous_state = libxml_use_internal_errors( true );

    // Populate $dom with $content, making sure to handle UTF-8.
    // Also, make sure that the doctype and HTML tags are not added to our
    // HTML fragment. http://stackoverflow.com/a/22490902/3059883
    $dom->loadHTML($html);
    // Create an instance of DOMXpath.
    $xpath = new DOMXpath( $dom );

    // Get images then loop through and add additional classes.
    $imgs = $xpath->query( "//img" );
    foreach ( $imgs as $img ) {
        $existing_class = $img->getAttribute( 'class' );
        echo $existing_class;
    }
}

add_action('wp_footer', 'breadcrumb_json');

您可以从我聪明的功能名称中看到我最终尝试在我的网页上为面包屑创建JSON + LD结构化数据。最重要的是,无论我如何尝试这个功能,我都会得到空字符串错误。我的$ html变量是否需要替换为我网站上的特定内容?我需要一些我失踪的全局变量吗?这是在Wordpress(版本4.8.2)中,以防相关。

感谢你朝着正确的方向努力!

1 个答案:

答案 0 :(得分:0)

您的$html变量未定义。

PHP没有像Javascript那样的词法范围,因此您在breadcrumb_json()函数之外定义的任何内容在函数内部都是未知的。

您需要将$html传递给breadcrumb_json($html)