从数据库读取时间数据转化字符串strtotime返回false,原因是”php中字符串输出一样但比较不相等"

Php   2025-04-25 11:29   51   0  

场景一:

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."'".":&emsp;字符长度:".mb_strlen($str1).":&emsp;字节长度:".strlen($str1)."&emsp;编码:".$encode1."</br>";
echo "str2='".$str2."'".":&emsp;字符长度:".mb_strlen($str2).":&emsp;字节长度:".strlen($str2)."&emsp;编码:".$encode2."</br>";

//剔除str1字串中非中文
preg_match_all('/[\x{4e00}-\x{9fff}]+/u', $str1, $matches);
$str1 = join('', $matches[0]);

echo "</br>---------------------剔除str1字串中非中文后----------------------</br>";
echo "str1='".$str1."'".":&emsp;字符长度:".mb_strlen($str1).":&emsp;字节长度:".strlen($str1)."&emsp;编码:".$encode1."</br>";
echo "str1 与 str2比较:&emsp;";
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)