带有PHP XPATCH的for each循环中的多个doms的回声文本



我正在进行取消练习,但我无法想到一种以我想要的格式输出数据的方法:

quote quote quote quote quote : author
quote quote quote quote quote : author
quote quote quote quote quote : author

我只能得到:

quote quote quote quote quote
quote quote quote quote quote
quote quote quote quote quote
author
author
author

代码:

$html = file_get_contents('http://www.brainyquote.com/authors/buddha');
$dom = new DOMDocument;
@$dom->loadHTML($html);
$classname1="b-qt";
$classname2="bq-aut";
$finder = new DomXPath($dom);
$quotes = $finder->query("//*[contains(@class, '$classname1')]//text()");
$authors = $finder->query("//*[contains(@class, '$classname2')]//text()");

foreach ($quotes as $quote){
    echo $quote->textContent . '<br>';
}
foreach ($authors as $author){
    echo $author->textContent . '<br>';
}

要假设的主要因素是,两个数组将使作者与报价相同的数组元素中。因此,使用报价中的键,您可以挑选相应的作者...

foreach ($quotes as $key => $quote){
    echo $quote->textContent . '<br>'.$authors[$key]->textContent. '<br>';
}

基于当前输出,似乎两个数组都具有相同数量的元素

您可以做: -

foreach ($quotes as $key=> $quote){
  echo $quote->textContent .' : '.$authors[$key]->textContent;
}

如果元素的数量不同,则: -

$quote_count = count($quotes);
$author_count = count($authors);

if($quote_count > $author_count ){
    foreach ($quotes as $key =>$quote){
        echo $quote->textContent .' : '. $authors[$key]->textContent;
    }
}else {
    foreach ($authors as $key =>$author){
        echo $quote[$key]->textContent .' : '. $author->textContent;
    }
}

最新更新