PDA

View Full Version : eregi vs strpos


sabret00the
06-06-2005, 01:10 PM
while(!feof($newfile))
{
$duplicate = fgets($newfile, 255);
// is email address submitted already in the file?
$dupe = eregi($email, $duplicate);
if($dupe == TRUE)
{
$content = "Our records show that this email address is already registered";
fclose($newfile);
//exit;
die("$front\n$content\n$back");
}
}
that works fine but
while(!feof($newfile))
{
$duplicate = fgets($newfile, 255);
// is email address submitted already in the file?
$dupe = strpos($email, $duplicate);
if($dupe == TRUE)
{
$content = "Our records show that this email address is already registered";
fclose($newfile);
//exit;
die("$front\n$content\n$back");
}
}don't, how come?

filburt1
06-06-2005, 01:40 PM
If the e-mail address breaks one of the 255-character boundaries, it won't work. You're also checking case-sensitively.


if (stripos($email, file_get_contents($filename)) !== false)
{
echo "Duplicate";
}

sabret00the
06-06-2005, 02:34 PM
hmmm, with your code, it's just ignoring the conditional :(

that's what i don't get the code for the eregi shows a true result yet i change it to strpos and it don't work.

actually that might've been human error

Andreas
06-06-2005, 02:39 PM
$dupe = strpos($email, $duplicate);




int strpos ( string haystack, mixed needle [, int offset] )

Returns the numeric position of the first occurrence of needle in the haystack string.


So if you want to check if $email does occur somewhere in $duplicate:


$dupe = strpost($duplicate, $email);


:)

But as filburt1 already said, you should user stripos() if available to avoing casing issues.

sabret00the
06-06-2005, 02:49 PM
it's giving me errors
Warning: file_get_contents() expects parameter 1 to be string


$filename = "../../testfile.txt"; //above the root
$newfile = fopen($filename, "r");
if(stripos(file_get_contents($newfile), $email) !== false)
{
$content = "Our records show that this email address is already registered";
fclose($newfile);
die("$front\n$content\n$back");
}


nevermind fixed it :)

So if you want to check if $email does occur somewhere in $duplicate:


$dupe = strpost($duplicate, $email);


:)

But as filburt1 already said, you should user stripos() if available to avoing casing issues.
oops but realised that and fixed it, i have no idea why they do "haystack, needle" when the saying is clearly "needle, haystack" grrr @ then, but thanks kirby :)

Andreas
06-06-2005, 03:16 PM
Yeah, it's totally confusing.
I think most other programming languages implement strpos(searchstring, string)

filburt1
06-06-2005, 06:50 PM
Yes, it's done logically given that the string to manipulate comes first, and then the arguments for manipulating that string. The arguments are named that way just for clarity, not for matching the phrase.