Problem with Strpos In PHP

坚强是说给别人听的谎言 提交于 2019-12-18 08:57:17

问题


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!


回答1:


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

$ID = (string)$postID;



回答2:


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.'.');



回答3:


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


来源:https://stackoverflow.com/questions/1039738/problem-with-strpos-in-php

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!