2009-06-24 59 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.'.');