Google Maps中转义字符&#39无法正常显示问题求助
解决Google Maps XML生成中撇号(')显示异常的问题
嘿,我太懂这种卡壳的感觉了——好不容易跟着教程走,结果撇号变成'没法正常显示,确实闹心。你的parseToXML函数只处理了<和>,但XML规范里需要转义的特殊字符不止这两个,尤其是撇号和引号,这就是问题所在。
修正后的完整转义函数
把你的parseToXML函数替换成下面这个版本,它会完整处理所有XML特殊字符,同时保证撇号能被Google Maps正确解析:
<?php // 转义XML特殊字符的函数 function parseToXML($htmlStr) { // 先替换&,因为所有转义序列都以&开头,必须最先处理 $xmlStr = str_replace('&', '&', $htmlStr); // 处理小于号、大于号 $xmlStr = str_replace('<', '<', $xmlStr); $xmlStr = str_replace('>', '>', $xmlStr); // 处理单引号(撇号)和双引号 $xmlStr = str_replace("'", ''', $xmlStr); $xmlStr = str_replace('"', '"', $xmlStr); return $xmlStr; } // 别忘了设置正确的XML响应头,确保解析正确 header('Content-Type: application/xml; charset=utf-8'); // 示例:从数据库取出数据后处理 // 假设$row是数据库查询结果的一行 echo '<marker name="' . parseToXML($row['name']) . '" address="' . parseToXML($row['address']) . '" />'; ?>
关键说明
- 先替换&:这是重中之重!如果先替换其他字符,比如
<变成<后,再替换&的话,会把<里的&又转成&,导致出现&lt;这种错误的转义序列。 - 单引号转义为
':XML里单引号的标准转义符是',Google Maps的API能正确识别这个转义,不会显示成'(虽然'也是合法的XML实体,但有些解析器可能处理方式不同)。 - 设置Content-Type头:必须在输出XML之前设置这个头,告诉浏览器和Google Maps这是XML格式的内容,避免编码或解析错误。
这样修改后,你数据库里的撇号就能在地图上正常显示了,其他特殊字符也不会出问题~
内容的提问来源于stack exchange,提问作者Talsma
相关产品推荐
相关产品推荐

