Поиск в текстовом файле строки не работает PHP - PullRequest
0 голосов
/ 07 марта 2012

Так что в моем 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 ]

4 голосов
/ 07 марта 2012

Ваш текущий код говорит: «Ваша электронная почта уже есть в нашей базе данных».в случае, если адрес электронной почты не в базе данных, или если это первый адрес электронной почты (вы всегда должны использовать сравнение === или! == с 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.";
}
1 голос
/ 07 марта 2012

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

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

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

1 голос
/ 07 марта 2012

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

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

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

1 голос
/ 07 марта 2012

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

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

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

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

0 голосов
/ 07 марта 2012
if (strpos($searchfile, "$addemail") === false) {

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

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

...