XML中的非法字符的处理
在php开发中遇到了这样的问题。utf-8编码的字符保存到数据库时可能因为字符串过长被截取保存了,截取后的数据很可能就包含非法字符了。这样的字符放到xml中,会导致整个xml不合法,无法被解析,程序对数据的依赖性太大。即使是放到cdata中也是如此。所以必须对可能的非法字串进行预处理。
发现php有个函数mb_check_encoding,可以判断是否是某个编码的合法字串:
function validutf($str){
if( mb_check_encoding($str,"utf-8")
)
return $str;
else
return "unknow data";
}
用上面的函数,返回的就一定是合法的utf-8字串了,可用于组装xml. 非法数据毕竟是少数,用unknow data代替。