简体   繁体   中英

Problem with Strpos In PHP

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!

Strpos won't work with an int, so you need to cast the ID to a string. Try this:

$ID = (string)$postID;

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";
        }
    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM