php - 2 个相同的字符串显示不同的长度

php - 2 identical string showing different lengths

我在比较 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() 比较两个值的正确方法是什么,因为我将在其他代码中进行比较。

感谢@Mark Ba​​ker,我必须 html_entity_decode() 数据库值,现在两个值匹配。

有一个类似的问题,其中 2 个字符串看起来相同,设法通过以下方式找出其中一个字符串的问题。

  • json_encode() 字符串,这将导致 null
  • 运行 json_last_error_msg() 得到任何编码错误。收到 格式错误的 UTF-8 字符,可能编码不正确
  • 字符串上的
  • 运行 utf8_encode() 修复了编码错误。