Problema con Strpos in PHP
Domanda
Sto scrivendo una funzione semplice e per qualche ragione (probabilmente una semplice) non funziona per me e mi chiedevo se potreste aiutarmi.
function check_value($postID)
{
$ID = $postID;
$cookie = Sto scrivendo una funzione semplice e per qualche ragione (probabilmente una semplice) non funziona per me e mi chiedevo se potreste aiutarmi.
<*>
Nel tentativo di capire quale fosse il problema ho messo quella linea di eco sopra l'Istruzione If per assicurarmi che ci siano elementi nelle variabili.
Il mio problema è che l'istruzione IF non viene mai stampata.
Un $ postID
è un numero 123123
.
La stringa $ cookie
è in genere qualcosa di simile a 123123.23422.234234.2342342.234234
Grazie per l'aiuto!
COOKIE['list_of_IDS'];
$position = strpos($cookie,$ID);
echo 'ID:'.$ID.'-Cookie:'.$cookie;
if ($position !== false)
{
echo "ID is in the cookie";
}
}
Nel tentativo di capire quale fosse il problema ho messo quella linea di eco sopra l'Istruzione If per assicurarmi che ci siano elementi nelle variabili.
Il mio problema è che l'istruzione IF non viene mai stampata.
Un $ postID
è un numero 123123
.
La stringa $ cookie
è in genere qualcosa di simile a 123123.23422.234234.2342342.234234
Grazie per l'aiuto!
Soluzione
Strpos non funzionerà con un int, quindi è necessario eseguire il cast dell'ID su una stringa. Prova questo:
$ID = (string)$postID;
Altri suggerimenti
Nota che se la tua stringa di cookie appare come 123123.23422.234234.2342342.234234
e stai cercando un ID, ad esempio 1231
o 23
, la tua funzione restituirà TRUE
mentre in realtà quell'ID non è nell'elenco. La tua attuale implementazione di strpos ()
corrisponderà anche a numeri parziali.
Ecco una semplice soluzione che richiederà che l'ID sia circondato da punti.
$position = strpos('.'.$cookie.'.', '.'.$ID.'.');
sì, come ha detto Brock, Strpos non funzionerà con un int, quindi devi lanciare l'id. quindi ho bisogno di qualche modifica nel tuo codice.
function check_value($postID)
{
$ID = $postID;
$cookie = sì, come ha detto Brock, Strpos non funzionerà con un int, quindi devi lanciare l'id.
quindi ho bisogno di qualche modifica nel tuo codice.
<*>COOKIE['list_of_IDS'];
$position = strpos($cookie,$ID);
echo 'ID:'.$ID.'-Cookie:'.$cookie;
if ($position !== false)
{
echo "ID is in the cookie";
}
}