
场景一:
header("Content-Type: text/html;charset=utf-8");
$str1=$data[0] //从数据库读出的值为"后勤保障部";
$str2="后勤保障部";
var_dump($data); //如上图
//查看编码方式
$encode1 = mb_detect_encoding($str1, array("ASCII","UTF-8","GB2312","GBK","BIG5"));
$encode2 = mb_detect_encoding($str2, array("ASCII","UTF-8","GB2312","GBK","BIG5"));
//当mb_strlen的内码选择为UTF-8的时候,则会将中文字符当成一个字符
//strlen,得到的是字符串所占的字节数
echo "str1='".$str1."'".": 字符长度:".mb_strlen($str1).": 字节长度:".strlen($str1)." 编码:".$encode1."</br>";
echo "str2='".$str2."'".": 字符长度:".mb_strlen($str2).": 字节长度:".strlen($str2)." 编码:".$encode2."</br>";
//剔除str1字串中非中文
preg_match_all('/[\x{4e00}-\x{9fff}]+/u', $str1, $matches);
$str1 = join('', $matches[0]);
echo "</br>---------------------剔除str1字串中非中文后----------------------</br>";
echo "str1='".$str1."'".": 字符长度:".mb_strlen($str1).": 字节长度:".strlen($str1)." 编码:".$encode1."</br>";
echo "str1 与 str2比较: ";
echo strcomp($str1,$str2)."</br>";
场景二:
知道BOM问题,解决方案如下:
//去除BOM
function removeBom($string){
if (substr($string, 0, 3) == pack("CCC", 0xef, 0xbb, 0xbf)) {
return substr($string, 3);
}
return $string;
}
//转化为统一编码;
function ConvertUTF8ToGB2312($str){
return iconv("UTF-8", "GB2312//IGNORE", $str);
}
场景三:
为了查出隐藏的特殊字符,使用 bin2hex() 函数查看字符串的二进制表示,这有助于发现隐藏的特殊字符。
对比str1和str2 var_dump(bin2hex($str1)); var_dump(bin2hex($str1)); 截取相关的字符串; $hf_last_str = substr($str1, 3); 再次对不 strcmp($str1,$str2)