使用php动态创建sitemap xml

时间:2010-06-13 07:12:05

标签: php entity sitemap

我使用以下链接

中的一些参考代码为我的网站创建了站点地图

Creating an XML sitemap with PHP

但我收到错误

XML解析错误:未定义的实体 位置:

我的内容如下

<< alt>>属性,它说像

< loc> http://www.example.com/700-& laquo; alt& RAQUO; -attributes合images.php< / loc>

任何人都可以告诉我如何摆脱这个错误。

2 个答案:

答案 0 :(得分:2)

我认为您必须在链接值上使用urlencode()函数,并在使用html_entity_decode()之前重新转换实体:

echo '<loc>'.urlencode(html_entity_decode($link)).'<loc>';

或代码中的类似内容。

答案 1 :(得分:0)

最佳解决方案是访问您的根文件夹并将以下行添加到您的Apache .htaccess文件

RewriteEngine On
RewriteRule sitemap\.xml sitemap.php [L]

然后在根文件夹中只有一个文件sitemap.php,因此通常可以通过http://yoursite.com/sitemap.xml访问,sitemap.php是所有搜索引擎首先搜索的默认网址。

该文件<?php header('Content-type: application/xml; charset=utf-8') ?> <?php echo '<?xml version="1.0" encoding="UTF-8"?>' ?> 应以

开头
  $query1="SELECT nickname FROM user$iduser" WHERE id=1;
  $query2="SELECT items FROM user$iduser WHERE id=1";
  $query3="SELECT data FROM user$iduser WHERE id=1";
  $query4="SELECT time FROM user$iduser WHERE id=1";

  $result=$conn->query($query);                                                     
  $row = $result->fetch_array(MYSQL_BOTH);
  $nickname = openssl_decrypt( base64_decode( $row['nickname'] ), $encrypt_method, $key2crypt, 0, $iv );

  $result=$conn->query($query2);
  $row = $result->fetch_array(MYSQL_BOTH);
  $items = openssl_decrypt( base64_decode( $row['items'] ), $encrypt_method, $key2crypt, 0, $iv );

  $result=$conn->query($query3);
  $row = $result->fetch_array(MYSQL_BOTH);
  $data = openssl_decrypt( base64_decode( $row['data'] ), $encrypt_method, $key2crypt, 0, $iv );

  $result=$conn->query($query4);
  $row = $result->fetch_array(MYSQL_BOTH);
  $time = openssl_decrypt( base64_decode( $row['time'] ), $encrypt_method, $key2crypt, 0, $iv );

  echo $nickname,",",$items,",",$data,",",$time;

我有这个解决方案,它就像一个魅力:)