Проблема с 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, чтобы убедиться, что на самом деле есть переменные.

Моя проблема заключается в том, что оператор IF никогда не распечатывается.

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

Строка $cookie обычно похожа на 123123.23422.234234.2342342.234234

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

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

 $ID = (string)$postID; 

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

Вот простой способ обхода, который потребует, чтобы ID был окружен точками.

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

да, поскольку Брок сказал, что 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"; } }