So che questa domanda è stata posta, ma sfortunatamente non ci sono risposte su come risolvere questo problema.Errore: avviso: strpos() [function.strpos]: Offset non contenuto nella stringa - impossibile trovare la soluzione
Questo appare nei miei file di log:
PHP messaggio: PHP Warning: strpos(): Offset non contenuti nella stringa ... on line 479
Purtroppo, non riesco a capire che cosa provoca questo problema e come risolverlo. Ho provato questa funzione molte volte (con un grande $ text, con un breve $ text, con $ spam words e senza $ spam words) ma non ho mai ricevuto questo errore. Quindi, che tipo di testi inviati dai miei utenti che causano questo errore?
if (strposab($text, $spam, 1)) {
echo "Email addresses and URLs not allowed here";
die;
}
$spam = array('http','www','hotmail','yahoo','gmail','msn');
function strposab($haystack, $needles=array(), $offset=0) {
$chr = array();
foreach($needles as $needle) {
$res = strpos($haystack, $needle, $offset);
if ($res !== false) $chr[$needle] = $res;
}
if(empty($chr)) return false;
return min($chr);
}
Seconda domanda:
Per qualche ragione questa funzione non filtra la prima parola della stringa. Per esempio in questa funzione di stringa non trova parola "hotmail":
$text = 'hotmail test test test test';
ma in questa stringa trova parola "hotmail":
$text = 'test hotmail test test test test';
[ "* Si noti inoltre che le posizioni della stringa partono da 0, e non 1 . * "] (http://us.php.net/strpos#refsect1-function.strpos-returnvalues). Stai passando '1' anziché' 0' come offset iniziale, e i tuoi utenti stanno inviando una stringa vuota/un singolo carattere. – DCoder