问题Strpos在PHP(Problem with Strpos In PHP)

2019-06-24 02:43发布

我正在写一个简单的功能,由于某种原因(可能是一个简单的一个),它不是为我工作,我在想,如果你们能帮助我。

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语句根本不会被打印出来。

一个$postID是一个数字123123

$cookie字符串通常是这样的123123.23422.234234.2342342.234234

谢谢你的帮助!

Answer 1:

Strpos不会与一个int,所以你需要将ID转换为字符串。 试试这个:

$ID = (string)$postID;


Answer 2:

请注意,如果你的cookie字符串看起来像123123.23422.234234.2342342.234234和你正在寻找一个ID,比如, 123123 ,你的函数将返回TRUE ,而实际上是ID不在列表中。 您当前的执行strpos()也将匹配部分号码。

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

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


Answer 3:

由于是布洛克说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";
        }
    }


文章来源: Problem with Strpos In PHP