PHP在Foreach内部卷曲

PHP在Foreach内部卷曲,php,curl,foreach,Php,Curl,Foreach,编辑:实际情况是,每次都会创建一个新的xml,但它会将新的$html信息添加到上一个xml中,所以当它到达列表中要卷曲的最后一个元素时,它会保存所有以前卷曲中解析的信息。我想不出是怎么回事 无法按预期执行卷曲。在下面的代码中,我有一个foreach循环,它循环通过一个列表($textary),并将list元素传递给curl,还用于使用该元素作为文件名创建一个xml文件。然后curl返回$html,然后将其解析并保存为xml。脚本运行,列表被传递,url被创建并传递给curl函数。我得到一个显示正

编辑:实际情况是,每次都会创建一个新的xml,但它会将新的$html信息添加到上一个xml中,所以当它到达列表中要卷曲的最后一个元素时,它会保存所有以前卷曲中解析的信息。我想不出是怎么回事

无法按预期执行卷曲。在下面的代码中,我有一个foreach循环,它循环通过一个列表($textary),并将list元素传递给curl,还用于使用该元素作为文件名创建一个xml文件。然后curl返回$html,然后将其解析并保存为xml。脚本运行,列表被传递,url被创建并传递给curl函数。我得到一个显示正确url的回音,返回,然后解析每个返回并保存到相应的文件中。问题似乎是curl实际上并没有卷曲新的$url。我在每个xml文件中获得完全相同的信息。我不知道,这是不对的。不知道为什么会这样。谢谢你的帮助

     Function FeedXml($textarray){
     $doc=new DOMDocument('1.0', 'UTF-8'); 
     $feed=$doc->createElement("feed");
     Foreach ($textarray as $text){
     $url="http://xxx/xxx/".$text;
     echo "PATH TO CURL".$url."<br>";
     $html=curlurl($url);  
     $xmlsave="http://xxxx/xxx/".$text;
     $dom = new DOMDocument(); //NEW dom FOR EACH SHOW
     libxml_use_internal_errors(true);
     $dom->loadHTML($html);
     $xpath = new DOMXPath($dom);
     $dom->formatOutput = true;
     $dom->preserveWhiteSpace = true;
 //PARSE EACH RETURN INFORMATION
     $images= $dom->getElementsByTagName('img');
     foreach($images as $img){
     $icon= $img    ->getAttribute('src');
     if( preg_match('/\.(jpg|jpeg|gif)(?:[\?\#].*)?$/i', $icon) ) { 
 // ITEM TAG
     $item= $doc->createElement("item");
     $sdAttribute = $doc->createAttribute("sdImage");
     $sdAttribute->value = $icon;  
     $item->appendChild($sdAttribute); 
     } //  IMAGAGE FOR EACH
     $feed->appendChild($item);
     $doc->appendChild($feed);      
     $doc->save($xmlsave);
     }
     }
     }

     Function curlurl($url){
     $ch = curl_init($url);
     curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
     curl_setopt($ch,CURLOPT_FRESH_CONNECT, true);
     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
     curl_setopt($ch, CURLOPT_VERBOSE, 1);//0-FALSE  1 TRUE
     curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, FALSE);
     curl_setopt($ch,CURLOPT_SSL_VERIFYPEER ,FALSE);
     curl_setopt($ch, CURLOPT_AUTOREFERER, true); 
     curl_setopt($ch, CURLOPT_TIMEOUT,'10');
     $html = curl_exec($ch);
     $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
     curl_close($ch);
     echo $httpcode;
     return $html;
     }
函数FeedXml($textarray){
$doc=新的DOMDocument('1.0','UTF-8');
$feed=$doc->createElement(“feed”);
Foreach($textarray作为$text){
$url=”http://xxx/xxx/“$文本;
回显“CURL的路径”。$url.
”; $html=curlurl($url); $xmlsave=”http://xxxx/xxx/“$文本; $dom=new DOMDocument();//每次演出都要有新的dom libxml\u使用\u内部错误(true); $dom->loadHTML($html); $xpath=newdomxpath($dom); $dom->formatOutput=true; $dom->preserveWhiteSpace=true; //解析每个返回信息 $images=$dom->getElementsByTagName('img'); foreach($img形式的图像){ $icon=$img->getAttribute('src'); 如果(preg|u match('/\.(jpg | jpeg | gif)(?:[\?\\\\\\\\\\\\].*))$/i',$icon)){ //项目标签 $item=$doc->createElement(“item”); $sdAttribute=$doc->createAttribute(“sdImage”); $sdAttribute->value=$icon; $item->appendChild($sdAttribute); }//每个 $feed->appendChild($item); $doc->appendChild($feed); $doc->save($xmlsave); } } } 函数url($url){ $ch=curl\u init($url); curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); curl_setopt($ch,CURLOPT_FRESH_CONNECT,true); curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true); curl_setopt($ch,CURLOPT_VERBOSE,1);//0-FALSE 1-TRUE curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE); curl_setopt($ch,CURLOPT_AUTOREFERER,true); curl_setopt($ch,CURLOPT_TIMEOUT,'10'); $html=curl\u exec($ch); $httpcode=curl\u getinfo($ch,CURLINFO\u HTTP\u代码); 卷曲关闭($ch); echo$httpcode; 返回$html; }
感谢您指出我在上述方面的缺点。我已经解决了这个问题。需要将以下内容移到Foreach中

     $doc=new DOMDocument('1.0', 'UTF-8'); 
     $feed=$doc->createElement("feed");

为什么是-1而并没有评论?我想你们会否决投票,至少要解释一下。当然,这个问题对每个人来说都不是很重要,但它确实有一定的正确性,因为它可能会指出其他人可能犯的错误。对于初学者,您应该正确缩进代码,以便它实际上是可读的。什么缩进不正确?实际上是所有内容。