0

我已经构建了一个简单的站点地图脚本,我无法在 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 Parsing Error: not well-formed”。

请查看并建议任何修改以使其正常工作。

谢谢

4

3 回答 3

1

我猜你的 vars 中有字符会弄乱 XML。

例如&, ä, <, >... 您需要正确编码内容。

尝试包装输出:首先更改$url$url = $site .'/'. $pflink .'/'. $pagelink;,然后将 XML 的输出更新为:

<?php
// ...
      echo '<url>
          <loc><![CDATA['.$url.']]></loc>
          <changefreq>'.$changefreq.'</changefreq>
          <priority>'.$priority.'</priority>
            </url>';
?>

CDATA可在http://en.wikipedia.org/wiki/CDATA获得说明

于 2012-08-23T08:03:41.757 回答
1

根据thedomFrontEndJohn的回答和评论,我以这种方式得到了正确的答案。

更改$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>';

希望这对其他人也有帮助。

于 2012-08-23T08:43:14.903 回答
0

如果我正确理解您的问题,由于使用 ' 但当尝试使用 " 时,您当前无法获取变量的值,以便变量回显 XML 变得不安。

尝试:

$url = $site . '/' . $pflink . '/' . $pagelink;

这将在不使用“的情况下给出变量的值。如果我误解了你,请告诉我。

编辑:考虑一下,假设变量在使用 '. 如果您还没有这样做,则可能值得检查变量的内容是否存在问题。

于 2012-08-23T07:55:50.197 回答