使用phpQuery迭代DOM元素


Iterate DOM elements with phpQuery

我通过curl获取外部页面并将其存储在变量中。然后我需要解析文档中的所有"a"标记并对其进行修改。为此,我需要循环遍历每个"a"标记。我当前的代码:

    <?php
    require 'phpQuery/phpQuery/phpQuery.php';
    $url = $_GET['url'];
    $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/1.0");
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $result= curl_exec ($ch);
    curl_close ($ch);
    $curlUrl = 'http://localhost:8888/curl2.php?url='.$url;
    $doc = phpQuery::newDocument ($result);

    //loop here 
    $href = $doc->find('a')->attr('href');      
    if (preg_match($url,$href))
    {
        //do something
    }       
    $doc->find('#nav li a')->attr('href', $curlUrl.$href);
    //end loop

    echo '<base href="'.$_GET['url'].'"/>';
    echo $doc;
    ?>

在jquery中有。each()函数,它做我需要的,并通过每个'a'标签迭代。在phpquery或其他php DOM方法中是否有类似的东西来迭代文档并修改每个"a"标记?

欢呼

我使用phpQuery已经有一段时间了,但是你应该能够使用foreach

foreach ($doc['a'] as $link) {
    $href = pq($link)->attr('href');
    // rest of code
}