下面是我使用的代码。卷曲只读最后一个元素的阵列
它从textarea中读取链接,然后获取源代码并最终过滤meta标签。但是它只显示数组中的最后一个元素。
因此,如果例如我把3个网站放入textarea,它只会读取最后一个,其他的只显示为空白。
花了数小时试试这个,请帮忙。
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 />
');
}
}
'print_r($ url)的输出是什么;'? – Prisoner
Array([0] => http://www.site1.com [1] => http://www.site2.com [2] => http://www.site3.com) – Cristian
简化您的循环 - 根据你的信息工作 - > http://codepad.org/jkZHnfAo – ManseUK