iconv函数有时会给我一个错误:
Notice:
iconv() [function.iconv]:
Detected an incomplete multibyte character in input string in [...]
Run Code Online (Sandbox Code Playgroud)
有没有办法在将数据输入到无线电之前检测到utf-8字符串中存在非法字符?
我正在使用PHP来处理来自各种来源的文本.我不认为它将是UTF-8,ISO-8859-1或WINDOWS-1252以外的任何东西.如果它不是其中之一,我只需要确保文本变成有效的UTF-8字符串,即使字符丢失也是如此.iconv的// TRANSLIT选项是否解决了这个问题?例如,此代码是否确保字符串可以安全地插入到UTF-8编码的文档(或数据库)中?
function make_safe_for_utf8_use($string) {
$encoding = mb_detect_encoding($string, "UTF-8,ISO-8859-1,WINDOWS-1252");
if ($encoding != 'UTF-8') {
return iconv($encoding, 'UTF-8//TRANSLIT', $string);
}
else {
return $string;
}
}
Run Code Online (Sandbox Code Playgroud) 我想str_word_count()在UTF-8字符串上使用.
这在PHP中安全吗?在我看来它应该是(特别是考虑到没有mb_str_word_count()).
但是在php.net上,有很多人通过展示他们自己的"多字节兼容"版本的功能来混淆水.
所以我想我想知道......
鉴于str_word_count简单地计算由" "(空格)分隔的所有字符序列,它应该在多字节字符串上是安全的,即使它不一定知道字符序列,对吧?
UTF-8中是否有等效的'空格'字符,它们不是ASCII " "(空格)?#
这是我猜的问题所在.