【问题标题】:Problem with Strpos In PHPPHP中的Strpos问题
【发布时间】:2009-06-24 17:19:48
【问题描述】:

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

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

为了找出问题所在,我将 echo 行放在 If 语句上方,以确保变量中确实有东西。

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

$postID 是一个数字 123123

$cookie 字符串通常类似于 123123.23422.234234.2342342.234234

感谢您的帮助!

【问题讨论】:

    标签: php string strpos


    【解决方案1】:

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

    $ID = (string)$postID;
    

    【讨论】:

    • 感谢您的快速回复!知道这将是显而易见的事情......
    【解决方案2】:

    请注意,如果您的 cookie 字符串看起来像 123123.23422.234234.2342342.234234 并且您正在寻找一个 ID,例如 123123,您的函数将返回 TRUE,而实际上该 ID 不在列表中。您当前的strpos() 实现也将匹配部分数字。

    这是一个简单的解决方法,需要将 ID 用点括起来。

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

    【讨论】:

      【解决方案3】:

      是的,正如 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";
              }
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-10
        • 1970-01-01
        • 2014-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-30
        • 1970-01-01
        相关资源
        最近更新 更多