在早先解决的这个问题之后,我似乎还有一个特殊字符和双引号等问题。
我曾经使用这个函数将像'&'这样的符号转换为XML的数字代码,
function convert_specialchars_to_xmlenties($string)
{
# in order to convert <, >, &, ' and ", include them into the square brackes [<\'"&>\x80-\xff]
$output = preg_replace('/([<\'"&>\x80-\xff])/e', "'&#' . ord('$1') . ';'", $string);
# return the result
return $output;
}
因此,如果我的意见是Judge-Fürstová Mila 和 Judge-Fürstová Mila
我会得到Judge-Fürstová Mila & Judge-Fürstová Mila
但我认为,因为我PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
用来处理我所有的特殊字符,所以如果我的输入类似于
法官-Fürstová Mila & 法官-Fürstová Mila
现在将返回,
Judge-Fürstová Mila & Judge-Fürstová Mila
我认为这对于 XML 是不正确的。
所以我认为我应该只转换<、>、&、' 和 "而不是其他特殊字符,如ü或á
我有什么想法可以做到这一点吗?或者我可能错误地思考/理解了这个问题,还有其他更好的方法来解决这个问题?
编辑:
我错了,因为我只是更改了仅转换<、>、&、' 和 "的函数
$output = preg_replace('/([<\'"&>])/e', "'&#' . ord('$1') . ';'", $string);
XML 仍然不接受下面的转换代码,
Judge-Fürstová Mila & Judge-Fürstová Mila
我想不出它这样做的任何其他原因!有任何想法吗?