PHP не будет сравнивать ту же строку - PullRequest
3 голосов
/ 02 апреля 2011

Если я отображаю $d[0], это liam.schnell@gmail.com, но он отказывается принять if ...

$d = file("mails.txt");
if ($d[0] == "liam.schnell@gmail.com") {
    echo "JOW!";
}
echo $d[0];

Есть идеи?

Ответы [ 3 ]

7 голосов
/ 02 апреля 2011

Попробуйте вызвать функцию усечения на $d[0], которая удалит все символы новой строки в начале и конце строки.

        $d = file("mails.txt");
        if(trim($d[0])=="liam.schnell@gmail.com"){
            echo "JOW!";
        }
        echo $d[0];

или не включать какие-либо новые строки вообще:

        $d = file("mails.txt", FILE_IGNORE_NEW_LINES);
        if($d[0]=="liam.schnell@gmail.com"){
            echo "JOW!";
        }
        echo $d[0];

Каждая строка в результирующем массиве будет включать конец строки, если только FILE_IGNORE_NEW_LINES используется, поэтому вы все еще нужно использовать rtrim (), если вы делаете не хочу, чтобы конец строки присутствовал.

От: http://php.net/manual/en/function.file.php

4 голосов
/ 02 апреля 2011

Я согласен с Майком Льюисом: использование trim может исправить причину ошибки.

Кроме того, в общем, если у вас странные результаты в PHP при сравнении строк, попробуйте '===' или strcompвидите, что это решает проблему.

http://www.phpcatalyst.com/php-compare-strings.php

3 голосов
/ 02 апреля 2011
$d = file("mails.txt", FILE_IGNORE_NEW_LINES);
if ($d[0] == "liam.schnell@gmail.com") {
    echo "JOW!";
}
echo $d[0];
...