我有两个字符串,一个字符串是API的输出 另一个作为longtext存储在MYSQL数据库中。我正在尝试 比较这两个字符串,所以这就是我所做的:
echo $stringfromMyDatabase;
echo "<br">;
echo $stringfromMyApi;
echo "<br>";
echo strcmp($stringfromMyDatabase,$stringfromMyapi);
echo "<br>";
echo "StringfrommyDatabase :".strlen($stringfromMyDatabase)."and StringfromApi:".strlen($stringfromMyApi);
并且这是我获得的输出:
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1
StringfrommyDatabase :25 and StringfromApi:17
虽然字符串看起来完全相似,但回显它们,如何 我知道这两个字符串的区别和位置以及如何打印 包含所有特殊字符的两个字符串?
任何有关正确解释的帮助都将受到高度赞赏!
答案 0 :(得分:0)
使用var_dump($ stringfromMyDatabase,$ stringfromMyApi)并查看此内容。
答案 1 :(得分:0)
根据您对它们执行的strlen,字符串会有所不同。我很确定你的数据库存储了带有额外空格字符的字符串(空格,制表符......)。
试试这个:
$len = strlen($stringfromMyDatabase);
for ($i = 0; $i < $len; $i++) {
if ($stringfromMyDatabase[$i] != $stringfromMyapi[$i])
echo "--{$stringfromMyDatabase[$i]}-- (code " . ord($stringfromMyDatabase[$i]) .
") != --{$stringfromMyapi[$i]}-- (code " . ord($stringfromMyapi[$i]) . ") @ char pos {$i}\n";
}
这将显示字符串的不同之处以及不同的(可能是不可打印的)字符。