为什么我的echo的PHP变量仍然没有产生任何结果?

时间:2011-11-18 20:39:20

标签: php variables xpath extract href

我最近提供了一个关于如何处理从HTML内容中提取URL的优秀答案:

Extracting context from a set point in the middle of an HTML file

但是在实现代码之后,我仍然没有在变量的echo调用中显示任何内容。我知道如果我回显get_the_content(),它会显示整个帖子正文,但也许它没有被loadHTML()正确处理?我实现了所提供的代码(根据我的知识工作完全没有错误),并在foreach循环中将提取的URL分配给变量,因此我可以在必要的位置使用它,如下面的代码所示:

<?php
    $doc   = new DOMDocument();
    $doc->strictErrorChecking = FALSE;
    $xpath = new DOMXpath($doc);

    $a = 1;
    if (have_posts()) :
        while ( have_posts() ) : the_post();
?>
<div class="ORtrack">
    <?php
        $success = $doc->loadHTML(get_the_content());
        if ($success === FALSE) {
            // error handling
        } else {
            $hrefs = $xpath->query("//a[contains(@href,'mp3')]/@href");
            foreach ($hrefs as $href) {
                $BEmp3s = $href;
            }
        };
    ?>
<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>
    ....
<?php
    endif;
    wp_reset_query();
?>
</div>

每个Post机身只能抓取一个MP3 URL,我总是想要第一个,如果由于某种原因最终会出现多个MP3 URL,那么构建阵列真的有必要吗?我还缺少什么,这是实现这一目标的最有效方式吗?

1 个答案:

答案 0 :(得分:1)

如果xpath只返回一个MP3,则不要使用foreach循环。这太过分了。通过执行

可以检索单个项目
$BEmp3s = $hrefs->item(0)

您可以通过

检查xpath是否实际找到了任何内容
if ($hrefs->length > 0) { ... found something ... }