Problème avec Strpos en PHP
Question
J'écris une fonction simple et pour une raison quelconque (probablement simple), cela ne fonctionne pas pour moi et je me demandais si vous pouviez m'aider.
function check_value($postID)
{
$ID = $postID;
$cookie = J'écris une fonction simple et pour une raison quelconque (probablement simple), cela ne fonctionne pas pour moi et je me demandais si vous pouviez m'aider.
<*>
En essayant de comprendre le problème, j’ai mis cette ligne d’écho au-dessus de la déclaration If afin de s’assurer que les variables contiennent des données.
Mon problème est que l'instruction IF ne s'imprime jamais.
Un $ postID
est un nombre 123123
.
La chaîne $ cookie
est généralement similaire à 123123.23422.234234.2342342.234234
Merci pour votre aide!
COOKIE['list_of_IDS'];
$position = strpos($cookie,$ID);
echo 'ID:'.$ID.'-Cookie:'.$cookie;
if ($position !== false)
{
echo "ID is in the cookie";
}
}
En essayant de comprendre le problème, j’ai mis cette ligne d’écho au-dessus de la déclaration If afin de s’assurer que les variables contiennent des données.
Mon problème est que l'instruction IF ne s'imprime jamais.
Un $ postID
est un nombre 123123
.
La chaîne $ cookie
est généralement similaire à 123123.23422.234234.2342342.234234
Merci pour votre aide!
La solution
Strpos ne fonctionnera pas avec un int, vous devez donc convertir l'identifiant en chaîne. Essayez ceci:
$ID = (string)$postID;
Autres conseils
Notez que si votre chaîne de cookie ressemble à 123123.23422.234234.23423423434.234234
et que vous recherchez un identifiant, par exemple, 1231
ou 23
, votre fonction renverrait TRUE
, alors que cet identifiant ne figure pas dans la liste. Votre implémentation actuelle de strpos ()
correspondra également à des nombres partiels.
Voici une solution de contournement simple selon laquelle l'ID doit être entouré de points.
$position = strpos('.'.$cookie.'.', '.'.$ID.'.');
oui, comme l'a dit Brock, Strpos ne fonctionnera pas avec un int, vous devez donc lancer l'identifiant. alors besoin de changer votre code.
function check_value($postID)
{
$ID = $postID;
$cookie = oui, comme l'a dit Brock, Strpos ne fonctionnera pas avec un int, vous devez donc lancer l'identifiant.
alors besoin de changer votre code.
<*>COOKIE['list_of_IDS'];
$position = strpos($cookie,$ID);
echo 'ID:'.$ID.'-Cookie:'.$cookie;
if ($position !== false)
{
echo "ID is in the cookie";
}
}