我有一个PHP文件,它根据从多个来源导入的数据生成Xml网站地图。由于导入数据中一行存在非法字符,我的网站地图目前不规范,但我无法删除它。
该字符看起来代表“平方”或上标2,并表示为正方形。我尝试将其粘贴到十六进制编辑器中,但它显示为“?”,十六进制代码也对应“?”。我还尝试使用iconv将所有源编码转换为所有目标编码,但没有任何组合可以删除此字符。
我还有以下函数以删除非ASCII字符:
然而,这仍然没有将其删除。如果我逐步执行代码,则非法字符会在Eclipse的调试窗口中扩展为。它遇到问题的字符串如下所示(希望它可以正确粘贴):
251gm-50
有没有什么函数可以删除此字符并防止出现此问题,任何建议都将不胜感激 - 我对导入的数据几乎没有控制权,因此需要在Xml生成点完成。
编辑:
发布后,我可以看到该字符未正确显示。在Eclipse窗口中查看时,它显示为(无空格 - 如果我留下空格,则呈现字符,看起来像)。
该字符看起来代表“平方”或上标2,并表示为正方形。我尝试将其粘贴到十六进制编辑器中,但它显示为“?”,十六进制代码也对应“?”。我还尝试使用iconv将所有源编码转换为所有目标编码,但没有任何组合可以删除此字符。
我还有以下函数以删除非ASCII字符:
function stripInvalidXml($value)
{
$ret = "";
$current;
if (empty($value))
{
return $ret;
}
$length = strlen($value);
for ($i=0; $i < $length; $i++)
{
$current = ord($value{$i});
if (($current == 0x9) ||
($current == 0xA) ||
($current == 0xD) ||
(($current >= 0x20) && ($current <= 0xD7FF)) ||
(($current >= 0xE000) && ($current <= 0xFFFD)) ||
(($current >= 0x10000) && ($current <= 0x10FFFF)))
{
if($current != 0x1F)
{
$ret .= chr($current);
}
}
else
{
$ret .= " ";
}
}
return $ret;
}
然而,这仍然没有将其删除。如果我逐步执行代码,则非法字符会在Eclipse的调试窗口中扩展为。它遇到问题的字符串如下所示(希望它可以正确粘贴):
251gm-50
有没有什么函数可以删除此字符并防止出现此问题,任何建议都将不胜感激 - 我对导入的数据几乎没有控制权,因此需要在Xml生成点完成。
编辑:
发布后,我可以看到该字符未正确显示。在Eclipse窗口中查看时,它显示为(无空格 - 如果我留下空格,则呈现字符,看起来像)。