我已经构建了一个简单的站点地图脚本,我无法在URL字段中获取URL输出。
我的PHP脚本。
header("Content-Type: text/xml;charset=iso-8859-1");
echo '<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
';
require_once('_ls-global/php/sr-connect.php');
$db = mysql_select_db($database,$connection) or trigger_error("SQL", E_USER_ERROR);
$sqlquery = mysql_query("SELECT * FROM $tablename ORDER by id")or die (mysql_error());
while ($list = mysql_fetch_assoc($sqlquery)){
$pflink=$list['pflink'];
$pagelink=$list['pagelink'];
$site="http://mysite.com";
$url='$site/$pflink/$pagelink';
$changefreq="weekly";
$priority="1.0";
echo '<url>
<loc>'.$url.'</loc>
<changefreq>'.$changefreq.'</changefreq>
<priority>'.$priority.'</priority>
</url>';
}
echo '</urlset>';
此脚本的输出是这个。
<url>
<loc>$site/$pflink/$pagelink</loc>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
如果我将$url='$site/$pflink/$pagelink';
更改为$url="$site/$pflink/$pagelink";
然后我只得到一个值和错误“XML解析错误:格式不正确”。
请参阅并提出任何修改以使其有效。
由于
答案 0 :(得分:2)
我猜你在变量中使用的字符会弄乱XML。
例如&
,ä
,<
,>
...您需要正确编码内容。
尝试包装输出:
首先将$url
更改为$url = $site .'/'. $pflink .'/'. $pagelink;
,然后将XML的输出更新为:
<?php
// ...
echo '<url>
<loc><![CDATA['.$url.']]></loc>
<changefreq>'.$changefreq.'</changefreq>
<priority>'.$priority.'</priority>
</url>';
?>
http://en.wikipedia.org/wiki/CDATA
提供的CDATA
说明
答案 1 :(得分:1)
如果我正确理解你的问题,你现在无法获得变量的值,因为使用了'但是当试图使用'时,变量回应XML会让人感到不安。
<强>尝试:强>
$url = $site . '/' . $pflink . '/' . $pagelink;
这将给出变量的值而不使用“。如果我错过了解你,请告诉我。
编辑:考虑到这一点,看起来更多的是一个或多个变量的值可能会扰乱XML,假设变量在使用'时没有给出它们的值。如果你还没有这样做,可能值得检查变量的内容。
答案 2 :(得分:1)
根据 thedom 和 FrontEndJohn 的答案和评论,我就是这样做的。
将$url='$site/$pflink/$pagelink';
更改为$url = $site .'/'. $pflink .'/'. $pagelink;
并修改。
echo '<url>
<loc>'.$url.'</loc>
<changefreq>'.$changefreq.'</changefreq>
<priority>'.$priority.'</priority>
</url>';
到
echo '<url>';
echo '<loc><![CDATA['.$url.']]></loc>';
echo '<changefreq>'.$changefreq.'</changefreq>';
echo '<priority>'.$priority.'</priority>';
echo '</url>';
希望这也有助于其他人。