已知 $sitemap_index = array( 'https://www.example.com/sitemap1_index.xml.gz', 'https://www.example.com/sitemap2_index.xml.gz', ); 如何用PHP的for循环输出2个index.xml.gz各自<loc>标签中的内容,用table表格显示输出,需要添加代理$proxy和特定$header
时间: 2023-06-05 12:07:35 浏览: 105
sqljdbc_8.2.0.0_enu_sqljdbc_8.2.0.0_enu_https://8enu.com_ARMLinu
好的,关于您的问题,以下是PHP代码示例:
```php
<?php
// sitemap_index数组
$sitemap_index = array(
'https://www.example.com/sitemap1_index.xml.gz',
'https://www.example.com/sitemap2_index.xml.gz'
);
// 代理和特定header
$proxy = 'http://your-proxy-server.com:8080';
$header = array(
'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36'
);
// 使用for循环遍历数组,并输出<loc>标签中的内容
echo '<table>';
foreach ($sitemap_index as $url) {
// 使用cURL获取XML文件内容
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$xml = curl_exec($ch);
curl_close($ch);
// 解析XML文件,获取<loc>标签中的内容
$xml_data = new SimpleXMLElement(gzdecode($xml));
$urls = $xml_data->xpath('//url/loc');
echo '<tr><td>URLs in '.$url.':</td><td>';
foreach ($urls as $url) {
echo $url.'<br>';
}
echo '</td></tr>';
}
echo '</table>';
?>
```
注意:上面的代码需要安装PHP扩展库curl和SimpleXML,并且需要开启allow_url_fopen选项。另外,代理和header参数需要根据您的实际情况进行修改。
阅读全文