2014-10-04 2 views
0

У меня есть две строки, одна строка, которая является выходом из API и другая, которая хранится в базе данных MYSQL как longtext. Я пытаюсь использовать , чтобы сравнить эти две строки, так что вот что я сделал:Странные строки в 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 –

ответ

0

использовать var_dump ($ stringfromMyDatabase, $ stringfromMyApi) и посмотреть на это.

+0

: Показывает строку (25) "1 2 3 4 5 6 7 8 9" –

+0

обе строки? –

0

Строки различаются в зависимости от степени, которую вы выполняли на них. Я уверен, что ваша база данных сохранила строку с дополнительными символами пробела (пробелы, вкладки, ...).

Попробуйте это:

$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 in в базу данных .. используя команду запроса вставки, но при извлечении строки длина отличается от того, почему это происходит? –

+0

Я думаю, что без использования этих длинных строк кода мы можем использовать str_replace ("\", "\\", $ string), но в этом случае "\\" сообщает об ошибке, почему так? –

+0

Вам нужно сбежать от вашей косой черты. О куске кода, который я вам дал, его единственная цель - показать вам, где различия между вашими двумя строками. Попробуйте, чтобы увидеть, что отличается. – NaeiKinDus

Смежные вопросы