2011-11-18 48 views
1

我最近提供了關於如何處理HTML內容這裏我提取URL一個很好的答案:爲什麼我的echo'd PHP變量仍然無法生成?

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

但是實現的代碼後,我仍然顯示從後上的變量回聲通話罷了。我知道如果我回顯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網址,我總是希望第一個如果由於某種原因最終成爲多個MP3網址,那麼真的有必要構建數組?我仍然錯過了什麼,這是實現這個目標最有效的方式嗎?

+1

你不初始化'$ BEmp3s'變量實際上發現任何東西。 – hakre

+0

爲了查看變量的內容,您是否嘗試過使用'var_dump'而不是'echo'? – Galled

+0

嘗試var_dump,如果它的null爲空 – Bram

回答

1

如果你的xpath只有一個MP3被返回,那麼不要使用foreach循環。這太過分了。單個項目可以通過做

$BEmp3s = $hrefs->item(0) 

檢索,你可以檢查如果XPath通過

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

因爲我只使用一次MP3 URL,所以最好不要直接引用$ hrefs-> item(0),甚至不要將它分配給一個變量? – lukas56z

+1

如果你能保證至少有一個結果,那麼肯定。 –

相關問題