2014-10-04 65 views
0

我有兩個字符串,一個字符串是API的輸出,另一個字符串以longtext的形式存儲在MYSQL數據庫中。我試圖用 來比較這兩個字符串,所以我做了以下操作:PHP中的奇怪字符串

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

愚蠢的錯字錯誤; s strcmp()@Pang – 2014-10-04 10:08:38

回答

0

使用var_dump($ stringfromMyDatabase,$ stringfromMyApi)並看看這個。

+0

:顯示字符串(25)「1 2 3 4 5 6 7 8 9」 – 2014-10-04 10:15:59

+0

都是字符串? – 2014-10-05 17:05:07

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"; 
} 

這將告訴你在哪裏字符串不同,哪些是不同的(可能非打印)字符。

+0

爲什麼它應該是?我將從api中檢索到的相同字符串存儲到數據庫中。使用插入查詢命令但是檢索字符串的長度不同,爲什麼會發生這種情況? – 2014-10-04 10:26:55

+0

我認爲,如果不使用這些冗長的代碼行,我們可以使用str_replace(「\」,「\\」,$ string),但在這種情況下,「\\」報告錯誤爲什麼會這樣? – 2014-10-04 10:27:44

+0

你必須逃避你的反斜槓。關於我給你的那段代碼,它唯一的目的是向你展示兩個字符串之間的區別。試試看看有什麼不同。 – NaeiKinDus 2014-10-04 10:29:26