2009-06-24 2 views
2

Я пишу простую функцию и по какой-то причине (возможно, простую) она не работает для меня, и мне было интересно, могли бы вы, ребята, помочь мне.Проблема с Strpos в PHP

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 никогда не распечатывается.

A $postID - это номер 123123.

$cookie строка, как правило, что-то вроде 123123.23422.234234.2342342.234234

Спасибо за вашу помощь!

ответ

11

Strpos не будет работать с int, поэтому вам нужно передать идентификатор в строку. Попробуйте следующее:

$ID = (string)$postID; 
+0

Благодарим за быстрый ответ! Знал, что это будет что-то глупо очевидное ... –

-2

да как Брок сказал, что 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

Обратите внимание, что если ваша строка печенье выглядит 123123.23422.234234.2342342.234234 и вы ищете ID, скажем, 1231 или 23, ваша функция будет возвращать TRUE в то время как на самом деле, что идентификатор не в списке. Ваша текущая реализация strpos() также будет соответствовать частичным номерам.

Это простейшее обходное решение, для которого идентификатор должен быть окружен точками.

$position = strpos('.'.$cookie.'.', '.'.$ID.'.'); 
Смежные вопросы