Почему моя эхо-переменная PHP по-прежнему ничего не производит? - PullRequest
1 голос
/ 19 ноября 2011

Мне недавно предоставили отличный ответ о том, как справиться с извлечением моего URL из содержимого HTML, здесь:

Извлечение контекста из заданного значения в середине 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>

Существует только ОДИН MP3-URL для захвата в теле сообщения, и я всегда хочу первый, если по какой-то причине в итоге получается несколько MP3-URL, так действительно ли необходимо создавать массив? Чего мне до сих пор не хватает, и является ли это наиболее эффективным способом для достижения этой цели?

1 Ответ

1 голос
/ 19 ноября 2011

Если ваш xpath возвращает только один MP3, не используйте цикл foreach. Это излишне. Один элемент можно получить, выполнив

$BEmp3s = $hrefs->item(0)

и вы можете проверить, действительно ли xpath что-то нашел с помощью

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