【问题标题】:Why is my echo'd PHP variable still producing nothing?为什么我的 echo'd PHP 变量仍然没有产生任何结果?
【发布时间】:2011-11-19 04:59:10
【问题描述】:

我最近在此处获得了关于如何处理从 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>

每个帖子正文只有一个 MP3 URL 可以抓取,如果由于某种原因最终确实有多个 MP3 URL,我总是想要第一个,那么真的有必要构建数组吗?我还缺少什么,这是完成此任务的最有效方式吗?

【问题讨论】:

  • 你没有初始化$BEmp3s变量。
  • 您是否尝试过使用var_dump 而不是echo 来查看变量的内容??
  • 试试 var_dump,如果它为空,它就会把东西放出来

标签: php variables xpath extract href


【解决方案1】:

如果您的 xpath 只返回一个 MP3,则不要使用 foreach 循环。那是矫枉过正。可以通过以下方式检索单个项目

$BEmp3s = $hrefs->item(0)

你可以检查 xpath 是否真的找到了任何东西

if ($hrefs->length > 0) { ... found something ... }

【讨论】:

  • 既然我也只使用过一次 MP3 URL,最好直接引用 $hrefs->item(0) 而不将其分配给变量吗?
  • 如果你能保证总是至少有一个结果,那么当然。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-03
  • 1970-01-01
  • 2021-10-31
  • 2015-07-24
  • 1970-01-01
  • 1970-01-01
  • 2020-09-23
相关资源
最近更新 更多