Php 仅读取数组最后一个元素的循环旋度

Php 仅读取数组最后一个元素的循环旋度,php,curl,Php,Curl,下面是我正在使用的代码 它从文本区域读取链接,然后获取源代码,最后过滤元标记。但是,它只显示数组中的最后一个元素 例如,如果我把3个网站放进文本区,它只会读最后一个,其他的则显示为空白 我已经花了好几个小时试过了,请帮忙 function file_get_contents_curl($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURN

下面是我正在使用的代码

它从文本区域读取链接,然后获取源代码,最后过滤元标记。但是,它只显示数组中的最后一个元素

例如,如果我把3个网站放进文本区,它只会读最后一个,其他的则显示为空白

我已经花了好几个小时试过了,请帮忙

function file_get_contents_curl($url)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}

if(isset($_POST['url'])){
    $url = $_POST['url'];
    $url = explode("\n",$url);
    print_r($url);
    for($counter = 0; $counter < count($url); $counter++){
        $html = file_get_contents_curl($url[$counter]); // PASSING LAST VALUE OF ARRAY
        $doc = new DOMDocument();
        @$doc->loadHTML($html);
        $nodes = $doc->getElementsByTagName('title');
        $title = $nodes->item(0)->nodeValue;
        $metas = $doc->getElementsByTagName('meta');
        for ($i = 0; $i < $metas->length; $i++){
            $meta = $metas->item($i);
            if($meta->getAttribute('name') == 'description')
                $description = $meta->getAttribute('content');
            if($meta->getAttribute('name') == 'keywords')
                $keywords = $meta->getAttribute('content');
        }
        print
        ('
        <fieldset>
            <table>
                <legend><b>URL: </b>'.$url[$counter].'</legend>
                <tr>
                    <td><b>Title:</b></td><td>'.$title.'</td>
                </tr>
                <tr>
                    <td><b>Description:</b></td><td>'.$description.'</td>
                </tr>
                <tr>
                    <td><b>Keywords:</b></td><td>'.$keywords.'</td>
                </tr>
            </table>
        </fieldset><br />
        ');
    }
}                            
函数文件\u get\u contents\u curl($url)
{
$ch=curl_init();
curl_setopt($ch,CURLOPT_头,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_URL,$URL);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
$data=curl\u exec($ch);
卷曲关闭($ch);
返回$data;
}
如果(isset($_POST['url'])){
$url=$_POST['url'];
$url=分解(“\n”,$url);
打印(url);
对于($counter=0;$counterloadHTML($html);
$nodes=$doc->getElementsByTagName('title');
$title=$nodes->item(0)->nodeValue;
$metas=$doc->getElementsByTagName('meta');
对于($i=0;$i<$metas->length;$i++){
$meta=$metas->item($i);
如果($meta->getAttribute('name')=='description')
$description=$meta->getAttribute('content');
如果($meta->getAttribute('name')=='keywords')
$keywords=$meta->getAttribute('content');
}
打印
('
URL:“.$URL[$counter]”
标题:'.$Title'
说明:'.$Description'
关键词:'.$Keywords'

'); } }
这是一个令人恼火的小错误,但这里有一个(非常简单的)解决方案:

您的URL将添加空白,但最后一个URL除外,因此您需要对其进行修剪,您可以执行以下操作:

curl_setopt($ch, CURLOPT_URL, trim($url));
unset($title,$description,$keywords);
如果可用,您可能只使用了
文件\u get\u contents()
(仍然需要修剪URL)

第二个问题是,如果没有
meta
数据,则使用旧变量(来自上一个循环),因此在主循环结束之前,在
print()
之后添加以下内容:

curl_setopt($ch, CURLOPT_URL, trim($url));
unset($title,$description,$keywords);

print\r($url)的输出是什么?数组([0]=>[1]=>[2]=>)简化了你的循环-根据你的信息为我工作->循环是动态的,我说site1 site2 site3作为一个例子,数组如果很好,curl只是执行数组的最后一个元素,真不敢相信这个简单的解决方案会是那么令人头痛!好极了