Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我的xpath查询创建的PHP变量会抛出一个;类DOMAttr的对象无法转换为字符串;致命错误?_Php_Wordpress_Loops_Xpath - Fatal编程技术网

为什么我的xpath查询创建的PHP变量会抛出一个;类DOMAttr的对象无法转换为字符串;致命错误?

为什么我的xpath查询创建的PHP变量会抛出一个;类DOMAttr的对象无法转换为字符串;致命错误?,php,wordpress,loops,xpath,Php,Wordpress,Loops,Xpath,因此,我开始问一个问题,为什么我的PHP代码要获取Wordpress安装中每个帖子内容中唯一的MP3 URL,以便自定义使用这里的内容>> 我做了几次编辑和更新,现在需要重新表述问题和背景。用户mrtsherman指出,根据我编写代码的顺序,我重新定义了$doc,但没有将其加载到$xpath中,然而,当我尝试调整这一点时,我的代码在回显变量$BEmp3s的最后一行抛出致命错误“类DOMAttr的对象无法转换为string”,这一切的最终结果。这是否意味着它无法将属性转换为字符串 我知道我已经很接

因此,我开始问一个问题,为什么我的PHP代码要获取Wordpress安装中每个帖子内容中唯一的MP3 URL,以便自定义使用这里的内容>>

我做了几次编辑和更新,现在需要重新表述问题和背景。用户mrtsherman指出,根据我编写代码的顺序,我重新定义了$doc,但没有将其加载到$xpath中,然而,当我尝试调整这一点时,我的代码在回显变量$BEmp3s的最后一行抛出致命错误“类DOMAttr的对象无法转换为string”,这一切的最终结果。这是否意味着它无法将属性转换为字符串

我知道我已经很接近这个解决方案了,它几乎要了我的命,但我也认为我已经看了太多太久了。在这一点上,任何洞察力都是黄金!下面是我的代码,它现在可以正确地进行分支:

<?php
    // Start MP3 URL
    $doc   = new DOMDocument();
    $doc->strictErrorChecking = FALSE;

    $xpath = new DOMXpath($doc);
    // End MP3 URL

    $a = 1;
    if (have_posts()) :
        while ( have_posts() ) : the_post();
?>
<?php
$BEpost_content = get_the_content();
if (strlen($BEpost_content) > 0) {
    echo "<div id='debug_content'>get_the_content has something</div>";
} else {
    echo "<div id='debug_content'>BEpost_content is empty</div>" ;
};
$success = $doc->loadHTML($BEpost_content);
$xpath = new DOMXpath($doc);
if ($success === FALSE) {
    echo "<div id='debug_loadcontent'>loadHTML failed to load post content</div>";
} else {
    $hrefs = $xpath->query("//a[contains(@href,'mp3')]/@href");
    if ($hrefs->length > 0) {
        echo "<div id='debug_xpath'>xpath found something</div>";
    } else {
        echo "<div id='debug_xpath'>xpath found nothing</div>";
    };
    $BEmp3s = $hrefs->item(0);
};
?>
<script type="text/javascript">
    var myCP<?php echo $a; ?> = new CirclePlayer("#jquery_jplayer_<?php echo $a; ?>",
    {
        mp3: "<?php echo $BEmp3s; ?>"
    }, {
        cssSelectorAncestor: "#cp_container_<?php echo $a; ?>",
        volume: 0.5
    });
</script>

mp3:“

尝试使用value?

当我这样做并刷新页面时,它会正确运行,没有错误,但源代码显示了应该显示在mp3中的值:(mp3 URL)为空,如下所示:mp3:“@VirtualPete-对。需要意识到的是,XPath选择的是属性,而不是属性的值。属性将具有名称、值,可能还有一些其他属性。这是一个抽象概念。
 mp3: "<?php echo $BEmp3s->value; ?>"