php - 使用PHP XPatch在同一foreach循环中从多个域回显文本

标签 php dom xpath

我正在做一个剪贴练习,它可以工作,但是我想不出一种以所需格式输出数据的方法:

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 .' : '.$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;
    }
}

关于php - 使用PHP XPatch在同一foreach循环中从多个域回显文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49587278/

相关文章:

xml - 使用 shell 脚本(centos 环境)从 postgresql artifacoty 获取最新版本的 postgresql 版本

php - 如何在 PHP 中检查字符串是否以 "_"开头?

javascript - PHP $_GET 无法与 JQuery Mobile 一起使用

php - 我可以将 PHP 扩展类、函数等放在命名空间中吗?

javascript - 如何将参数发送到 php 脚本(使用 ajax)以便将它们包含在服务器端?

javascript - 注销/删除dojo中div标签的所有子节点

javascript - 对象类在DOMWindow的原型(prototype)链中出现两次?

javascript - 当从函数返回内容时,将新创建的 TD 元素上的 .innerHTML 设置为空白

Python + Selenium : How can click on "onclick" elements?

internet-explorer - Internet Explorer中的XPath及其与Chrome,Firefox中Xpaths的区别