PHP中的Strpos问题

时间:2009-06-24 17:19:48

标签: php string strpos

我正在编写一个简单的函数,由于某种原因(可能是一个简单的函数)它不适合我,我想知道你们是否可以帮助我。

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

在试图弄清问题是什么时,我把那条回声线置于If语句之上,以确保变量中确实有东西。

我的问题是IF语句永远不会打印出来。

$postID是一个数字123123

$cookie字符串通常类似于123123.23422.234234.2342342.234234

感谢您的帮助!

3 个答案:

答案 0 :(得分:14)

Strpos不适用于int,因此您需要将ID转换为字符串。试试这个:

$ID = (string)$postID;

答案 1 :(得分:2)

请注意,如果您的Cookie字符串看起来像123123.23422.234234.2342342.234234并且您正在寻找ID,例如123123,那么您的函数将返回TRUE ID不在列表中。您当前的strpos()实施也会匹配部分数字。

这是一个简单的解决方法,需要ID包围点。

$position = strpos('.'.$cookie.'.', '.'.$ID.'.');

答案 2 :(得分:-2)

是的,因为Brock说Strpos不会使用int,所以你必须施放id。 所以需要对代码进行一些更改。

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