Поиск текстового файла для строки не работает PHP

Так что в моем php-коде я пытаюсь, чтобы этот код проверил мой текстовый файл, чтобы увидеть, что строка существует. Но каждый раз, когда я добавляю код, независимо от того, существует строка или нет, он повторяет код, если строка существует.

$addemail = $_POST["subemail"];
$searchfile = file_get_contents("emailist.txt");

if (!strpos($searchfile, "$addemail")) 
{
echo "Your email is already in our database.";
}
else
   {
code to be executed if string doesn't exist.
   }

Спасибо заранее, это действительно поставило меня в тупик:\

5 ответов

Решение

Ваш текущий код говорит: "Ваша электронная почта уже есть в нашей базе данных". в случае, если электронное письмо отсутствует в базе данных, или если это первое электронное письмо (вы всегда должны использовать сравнение === или!== со strpos). Код должен быть:

$addemail = $_POST['subemail'];
$searchfile = file_get_contents('emailist.txt');

if (strpos($searchfile, $addemail) === false)
{
   //code to be executed if string doesn't exist.
}
else
{
   echo "Your email is already in our database.";
}

Вы должны использовать этот синтаксис:

$pos = strpos($searchfile, $addemail);
if ( $pos === false )
{
   ....
}

strpos() может возвращать логическое значение FALSE, но также может возвращать не-логическое значение, которое оценивается как FALSE, если позиция была 0-м (первым) символом.

Посмотрите @ http://php.net/manual/en/function.strpos.php для получения дополнительной информации.

Допустим, электронная почта отсутствует в поисковом файле. T

курица твоя strpos вернусь false, Когда вы добавляете отрицание перед выражением, равным false, оно превращается в true.

Таким образом, ваш поиск адреса электронной почты в файле будет верным, если адрес электронной почты отсутствует в файле. Вам нужно убрать отрицание из условия.

Возможно ли, что значение $addemail вы проверяете, находится ли он в самом начале вашего текстового файла?

strpos() возвращает смещение одной строки в другой. Если эта строка будет в начале другой, индекс, очевидно, будет 0, strpos() возвращает false, если строка не может быть найдена. поскольку 0 == false но 0 !== falseВы можете изменить свое состояние на if (strpos($searchfile, $addemail) !== false),

При этом вы должны заметить, что strpos() чувствительна к регистру. Это означает me@EXAMPLE.org не найден при поиске me@example.org, Чтобы преодолеть это, вы можете использовать нечувствительный к регистру брат stripos ().

if (strpos($searchfile, "$addemail") === false) {

используйте условие как это...

см. это предупреждение...http://php.net/manual/en/function.strpos.php#refsect1-function.strpos-returnvalues

Другие вопросы по тегам