Strpos() not working properly

978 views Asked by At

I'm trying to look for the input content (email) within a text file. So far, the mode works very well if the values are correct, otherwise it seems to go in the state. Let me explain:

I have the variable $email the contents of a possible email, I then a text file containing all the emails separated by a delimiter such as:

email; email; etc ...

at this point with strpos(); I check if the parameter is found in the file, and this works, maybe too much. In particular, if I insert an e-mail that isn't present in the file, the code returning to the message "email found" even if it was not found!

Why does this happen?

$email = "[email protected]";
$file = file_get_contents("utenti.txt"); //get file contents
if(null != strpos($file, $email))
{
    echo "email found";
}else{
   echo "email was not found!";
}
1

There are 1 answers

4
David Jones On BEST ANSWER

Change:

if(null != strpos($file, $email))

to:

if(false !== strpos($file, $email))

This is because the strpos could be zero so you need to test for false.

I would also see the comment Fred -ii- made on the question. He makes a very good point.