使用phpQuery迭代DOM元素
我通过curl获取外部页面并将其存储在变量中。然后我需要解析文档中的所有“a”标记并对其进行修改。为此,我需要遍历每个“a”标记。我当前的代码:使用phpQuery迭代DOM元素,php,dom,curl,Php,Dom,Curl,我通过curl获取外部页面并将其存储在变量中。然后我需要解析文档中的所有“a”标记并对其进行修改。为此,我需要遍历每个“a”标记。我当前的代码: <?php require 'phpQuery/phpQuery/phpQuery.php'; $url = $_GET['url']; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch,
<?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
}
谢谢你的回复,但是第一行代码有效吗?我对php还是新手,但是在一条语句中可以有两个赋值运算符吗?这两个作业是做什么的?是的,你可以,但在我的回答中是一个打字错误:)我正在编辑,正如你所评论的。我的编辑是基于一些使用phpQuery的实时代码,我去检查它只是为了确定。所以如果我理解正确的话。提取的外部内容存储为对象或数组。然后可以通过foreach函数直接访问。pq是否等同于。这在javascript中?phpQuery允许使用数组语法查找内容中的选择器,如#id、.class、element等。没有pq与此不等价。它是phpQuery中的一个helper方法,返回一个phpQuery对象,该对象将理解对它的进一步方法调用