关于如何从HTML内容中提取URL,我最近得到了一个很好的答案:
从HTML文件中间的设定点提取上下文
但是在实现代码之后,我仍然没有显示任何来自变量的echo调用。我知道,如果我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 body只有一个MP3 URL,我总是想要第一个,如果出于某种原因,最终有多个MP3 URL,所以真的有必要建立数组吗?我还错过了什么,这是最有效的方式来完成这一点吗?
如果xpath只返回一个MP3,那么不要使用foreach循环。这是多余。单个条目可以通过
进行检索$BEmp3s = $hrefs->item(0)
你可以通过
检查xpath是否找到了什么if ($hrefs->length > 0) { ... found something ... }