为什么我的xpath查询创建的PHP变量会抛出一个;类DOMAttr的对象无法转换为字符串;致命错误?
因此,我开始问一个问题,为什么我的PHP代码要获取Wordpress安装中每个帖子内容中唯一的MP3 URL,以便自定义使用这里的内容>> 我做了几次编辑和更新,现在需要重新表述问题和背景。用户mrtsherman指出,根据我编写代码的顺序,我重新定义了$doc,但没有将其加载到$xpath中,然而,当我尝试调整这一点时,我的代码在回显变量$BEmp3s的最后一行抛出致命错误“类DOMAttr的对象无法转换为string”,这一切的最终结果。这是否意味着它无法将属性转换为字符串 我知道我已经很接近这个解决方案了,它几乎要了我的命,但我也认为我已经看了太多太久了。在这一点上,任何洞察力都是黄金!下面是我的代码,它现在可以正确地进行分支:为什么我的xpath查询创建的PHP变量会抛出一个;类DOMAttr的对象无法转换为字符串;致命错误?,php,wordpress,loops,xpath,Php,Wordpress,Loops,Xpath,因此,我开始问一个问题,为什么我的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; ?>"