Problem with Strpos In PHP
Question
I'm writing a simple function and for some reason(probably a simple one) it's not working for me and I was wondering if you guys could help me out.
function check_value($postID)
{
$ID = $postID;
$cookie = $_COOKIE['list_of_IDS'];
$position = strpos($cookie,$ID);
echo 'ID:'.$ID.'-Cookie:'.$cookie;
if ($position !== false)
{
echo "ID is in the cookie";
}
}
In trying to figure out what the problem was I put that echo line above the If Statement there to make sure there actually is stuff in the variables.
My problem is that the IF statement never prints out.
A $postID
is a number 123123
.
The $cookie
string is usually something like 123123.23422.234234.2342342.234234
Thanks for your help!
Solution
Strpos won't work with an int, so you need to cast the ID to a string. Try this:
$ID = (string)$postID;
OTHER TIPS
Note that if your cookie string looks like 123123.23422.234234.2342342.234234
and you are looking for an ID, say, 1231
or 23
, your function would return TRUE
while actually that ID is not in the list. Your current implementation of strpos()
will also match partial numbers.
Here is a simple workaround that will require the ID to be surrounded by dots.
$position = strpos('.'.$cookie.'.', '.'.$ID.'.');
yes as Brock said Strpos wont work with an int so you have to cast the id. so need some change in your code.
function check_value($postID)
{
$ID = $postID;
$cookie = $_COOKIE['list_of_IDS'];
$position = strpos($cookie,$ID);
echo 'ID:'.$ID.'-Cookie:'.$cookie;
if ($position !== false)
{
echo "ID is in the cookie";
}
}