gpt4 book ai didi

php - Xml 中的非法字符

转载 作者:可可西里 更新时间:2023-11-01 00:38:02 26 4
gpt4 key购买 nike

我有一个 PHP 文件,它根据从多个来源导入的数据生成一个 Xml 站点地图。由于导入数据的一行中存在非法字符,我的站点地图目前格式不正确,但我正在努力将其删除。

该字符看起来代表“平方”或上标 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;
}

但是这仍然没有删除它。如果我单步执行代码,非法字符会在 eclipses 调试窗口中扩展为 。它有问题的字符串在下面(希望它正确粘贴)

251gm-50

非常感谢任何有关删除此字符并防止出现此表单的函数的想法 - 我无法控制导入的数据,因此需要在生成 Xml 时完成。

编辑

发布后我发现角色显示不正确。在 Eclipse 窗口中查看时,它显示为 & # 65535 ; (没有空格 - 如果我在其中留下空格,它会呈现字符,看起来像)

最佳答案

您正在尝试执行字符转码。不要自己动手,使用 PHP 库。

我发现 iconv 非常有用:

$cleanText = iconv('UTF-8','ISO-8859-1//TRANSLIT//IGNORE', $srcText);

此代码从 utf-8 转换为 iso-8859,尝试重新映射“奇异”字符并忽略无法转码的字符。

我只是猜测源编码是 utf-8。您必须发现传入数据使用的是哪种编码,并将其转换为您在 XML header 中声明的编码。

猜测文件编码的 linux 命令行工具是 enca

关于php - Xml 中的非法字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3245809/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com