2

我在比较 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()并使用它,我已将其缩小到"角色。

用 a 替换数据库值"并运行以下代码输出

2671756f743b对于数据库值和22硬编码值。

echo bin2hex($json_data)."<br>";
echo bin2hex('"')."<br>";

什么是正确的方法来比较使用strcmp()基于比较的两个值我将做其他代码。

4

2 回答 2

1

感谢@Mark Ba​​ker,我不得不html_entity_decode()使用数据库值,现在两个值都匹配。

于 2017-11-03T10:39:56.267 回答
0

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

  • json_encode()字符串,这将导致null
  • 运行json_last_error_msg()以获取任何编码错误。得到格式错误的 UTF-8 字符,可能编码不正确
  • utf8_encode()在字符串上运行可以解决编码错误。
于 2019-08-17T09:48:40.297 回答