我正在尝试使用 php 生成站点地图,但由于我的某些产品名称包含“&trade”,因此出现错误。
我知道 & 需要转义到 &,但我不确定如何处理 &trade。这是一个很难搜索的问题,我敢肯定它会为某人找到,但我找不到相关的东西。
// Remove Whitespace from Links
function url_safe ($data) {
$data = preg_replace('/\s/', '-', htmlentities($data));
return $data;
}
//URLs for Products
$query = "SELECT product_id, product_name FROM product WHERE active = 'Y'";
$result = mysqli_query($dbc, $query) or die(mysqli_error($dbc) . '<br />Query: ' . $query);
while($row = mysqli_fetch_array($result)) {
$data .= "\t<url>\n";
$data .= "\t\t<loc>https://www.example.com/product.php?pid=$row[0]&name=" . url_safe($row[1]) . "</loc>\n";
$data .= "\t\t<changefreq>monthly</changefreq>\n";
$data .= "\t\t<priority>1.0</priority>\n";
$data .= "\t</url>\n";
$i++;
}
这是我对标题中带有 &trade 的任何产品的错误。
XML 解析错误:未定义的实体
以下是生成的输出中导致错误的示例。
<url>
<loc>https://www.example.com/product.php?pid=2738&name=My-Product™-Has-A-Trademark</loc>
<changefreq>monthly</changefreq>
<priority>1.0</priority>
</url>