2013-05-03 4 views
0

Я извлекаю внешнюю страницу через curl и сохраняю ее в переменной. Затем мне нужно проанализировать все теги «a» в документе и изменить его. Для этого мне нужно пропустить каждый тег 'a'. Мой текущий код:Элементы Iterate DOM с phpQuery

<?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(), который делает то, что мне нужно, и перебирает «а» тега. Есть ли что-то подобное в phpquery или других php DOM-методах для итерации документа и изменения каждого тега 'a?

Приветствия

ответ

1

Ее было время, так как я использовал phpQuery, но ваши должны быть в состоянии просто использовать Foreach

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

спасибо за ответ, но это первая строка кода в силе? Я все еще новичок в php, но возможно ли иметь два оператора присваивания в одном выражении? что делают два назначения? –

+0

Да, вы можете, но в моем ответе это была опечатка :) Я редактировал, как вы прокомментировали. Мое редактирование основано на каком-то живом коде с использованием phpQuery, я пошел проверять его, чтобы быть уверенным. – fullybaked

+0

Так что если я правильно понял. Вытянутое внешнее содержимое сохраняется как объект или массив. Которые могут быть напрямую доступны функцией foreach. Является ли pq эквивалентным. Это в javascript? –