2009-06-24 33 views
2

我正在写一个简单的函数,出于某种原因(可能是一个简单的函数),它不适合我,我想知道你们是否可以帮助我。在PHP中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语句从不打印出来。

A $postID是一个数字123123

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

感谢您的帮助!

回答

11

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

$ID = (string)$postID; 
+0

感谢您的快速回复!知道这将是一个愚蠢的明显的东西... – 2009-06-24 17:30:52

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

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

这是一个简单的解决方法,它将要求ID被点包围。

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