已知 $sitemap_index = array( 'https://www.example.com/sitemap1_index.xml.gz', 'https://www.example.com/sitemap2_index.xml.gz', ); 如何用PHP获取2个index.xml.gz中各自<loc>标签中的内容
时间: 2023-06-07 21:09:35 浏览: 146
你好,可以使用以下PHP代码获取这两个index.xml.gz文件中各自<loc>标签中的内容:
```
//Loop through each sitemap index file
foreach ($sitemap_index as $sitemap_file) {
//Uncompress the file
$xml_str = gzdecode(file_get_contents($sitemap_file));
//Parse the XML
$xml = simplexml_load_string($xml_str);
//Loop through each URL in the sitemap
foreach($xml->sitemap as $sitemap) {
//Get the location
$loc = (string)$sitemap->loc;
echo $loc . "\n"; //Output the location
}
}
```
这段代码会先遍历两个index.xml.gz文件,然后解压缩并解析每个文件。接着,它会遍历每个文件中的所有URL,从中提取<loc>标签中的内容并输出。注意,这段代码假设$sitemap_index是一个包含两个index.xml.gz文件URL的数组。
相关问题
已知 $sitemap_index = array( 'https://www.example.com/sitemap1_index.xml.gz', 'https://www.example.com/sitemap2_index.xml.gz' ); 如何用PHP获取每个index.xml.gz中的sitemap和数量以及sitemap中<loc>标签的数量
可以使用PHP的SimpleXML库来解析XML文件,具体的步骤如下:
1. 遍历$sitemap_index数组,获取每个index.xml.gz文件的URL
2. 对于每个URL,使用gzip解压缩并解析其内容
3. 使用SimpleXML库将解析后的XML文件转换为PHP对象
4. 获取对象中<sitemap>的数量和每个<sitemap>中<loc>标签的数量,存储到一个数组中
5. 返回这个数组作为结果
以下是一个示例代码:
```
$sitemap_index = array(
'https://www.example.com/sitemap1_index.xml.gz',
'https://www.example.com/sitemap2_index.xml.gz'
);
$result = array();
foreach ($sitemap_index as $sitemap_url) {
// download and extract the sitemap index file
$content = file_get_contents('compress.zlib://' . $sitemap_url);
// parse the sitemap index file into a PHP object
$xml = simplexml_load_string($content);
// get the number of sitemaps and the number of URLs in each sitemap
$sitemaps = count($xml->sitemap);
$urls = array();
foreach ($xml->sitemap as $sitemap) {
$urls[] = count($sitemap->loc);
}
$result[] = array(
'sitemap' => $sitemap_url,
'sitemaps' => $sitemaps,
'urls' => $urls
);
}
// print the result array
print_r($result);
```
已知 $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>标签中的内容
可以这样写:
```
$sitemap_index = array(
'https://www.example.com/sitemap1_index.xml.gz',
'https://www.example.com/sitemap2_index.xml.gz',
);
foreach ($sitemap_index as $index_url) {
$index = gzopen($index_url, 'r');
while ($xml = gzread($index, 4096)) {
$xml_parser = xml_parser_create();
xml_parse_into_struct($xml_parser, $xml, $values);
xml_parser_free($xml_parser);
foreach ($values as $key => $value) {
if ($value['tag'] === 'LOC') {
echo $value['value'] . "\n";
}
}
}
gzclose($index);
}
```
这个代码块会遍历 `$sitemap_index` 数组中的每个索引文件,逐个读取并解析 Sitemap 文件。对于每个 Sitemap 文件,它会找到 `<loc>` 标签中的内容并输出到屏幕上。
阅读全文