我在比较2个相同的字符串时遇到问题。第一个字符串是从数据库中检索出来的,另一个是硬编码的。
字符串为{ "name":"John", "age":30, "car":null }
。
我首先运行此代码,数据库字符串的长度为79个字符,硬编码字符串的长度为39个字符。
echo '<pre>';var_dump($json_data);echo '</pre>';
echo '<pre>';var_dump('{ "name":"John", "age":30, "car":null }');echo '</pre>';
经过一些搜索后,建议使用bin2hex()
并使用我将其缩小到"
字符。
用"
替换数据库值并运行以下代码输出
2671756f743b
表示数据库值,22
表示硬编码值。
echo bin2hex($json_data)."<br>";
echo bin2hex('"')."<br>";
根据比较我将使用strcmp()
来比较这两个值的正确方法是什么?我将使用其他代码。
答案 0 :(得分:1)
感谢@Mark Baker,我不得不html_entity_decode()
数据库值,现在两个值都匹配。
答案 1 :(得分:0)
发生了类似的问题,其中两个字符串似乎相同,设法通过以下方式找出其中一个字符串的问题。
json_encode()
字符串,这将导致 null json_last_error_msg()
以获得任何编码错误。得到了格式错误的UTF-8字符,可能编码有误 utf8_encode()
可以解决编码错误。