PHP 获取当前网址并提取 XML 内容写入 Sitemap 文件
PHP 获取当前网址并提取 XML 内容写入 Sitemap 文件
本代码使用 PHP 获取当前网址,提取 XML 内容中的特定链接,并将其写入 Sitemap 文件。
代码:
<?php
// 取当前网址
$host = $_SERVER['HTTP_HOST'];
$host = strtolower($host);
$host = explode('.', $host);
$subdomain = $host[0];
$domain = $host[1];
$tld = $host[2];
$current_domain = 'https://' . $subdomain . '.' . $domain . '.' . $tld;
$first_part_escaped = preg_quote($current_domain, '/'); // 转义变量中的特殊字符,需指定正则分隔符
// 提取 xml 内容
$content = file_get_contents('data3883/xfm_cache_new_log.txt');
if ($content === false) {
echo '读取文件错误';
exit;
}
if (preg_match_all('/$first_part_escaped(.*?)
/', $content, $out, PREG_SET_ORDER) === false) {
echo '正则表达式匹配错误:' . preg_last_error();
exit;
}
$written = false; // 标识是否成功写入文件
foreach ($out as $value) {
// 写入内容
$rs = file_put_contents('sitemap.txt', $value[1] . "\r\n", FILE_APPEND);
if ($rs === false) {
echo '写入文件错误';
exit;
} else {
$written = true; // 标识已成功写入文件
}
}
if ($written) {
echo '写入成功';
} else {
echo '写入失败';
}
代码解释:
- 获取当前网址: 代码首先获取服务器变量
$_SERVER['HTTP_HOST'],然后将域名转换为小写并拆分为子域名、主域名和顶级域名。最后拼接成完整的 URL 地址。 - 转义特殊字符: 使用
preg_quote()函数对 URL 地址进行转义,防止在正则表达式中出现错误。 - 提取 XML 内容: 使用
file_get_contents()函数读取 XML 文件内容。 - 正则匹配: 使用
preg_match_all()函数匹配 XML 内容中包含当前 URL 地址的链接,并将其存储在$out数组中。 - 写入 Sitemap 文件: 使用
file_put_contents()函数将匹配到的链接写入sitemap.txt文件。 - 错误处理: 代码中包含错误处理,如果读取文件失败、正则匹配失败或写入文件失败,会输出错误信息并退出。
- 修复写入失败问题: 在修复后的代码中,添加了一个
$written变量作为标识,用于判断是否成功写入文件。在循环中,如果成功写入文件,则将$written设置为true。最后根据$written的值来判断是否输出写入成功还是写入失败。这样可以避免在循环中每次都输出写入成功,但实际上没有写入文件的问题。
代码使用:
- 将代码保存为
.php文件。 - 将 XML 文件路径替换为实际的路径。
- 运行代码,即可将匹配到的链接写入
sitemap.txt文件。
注意:
- 本代码仅供参考,请根据实际情况进行修改和调整。
- 确保 XML 文件内容格式正确。
- 确保
sitemap.txt文件可写。 - 可以根据需要修改正则表达式来匹配不同的链接。
原文地址: https://www.cveoy.top/t/topic/puXu 著作权归作者所有。请勿转载和采集!