I know, this question has been asked, but unfortunately, there are no answers how to solve this problem.
This appears in my logfiles:
PHP message: PHP Warning: strpos(): Offset not contained in string in ... on line 479
Unfortunately, I can not understand what causes this problem and how to fix it. I tested this function many times (with large $text, with short $text, with $spam words and without $spam words) but I never get this error. So, what kind of texts my users submit that cause this error?
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);
}
Second question:
For some reason this function does not filter the first word of the string.
For example in this string function does not find word "hotmail":
$text = 'hotmail test test test test';
but in this string it finds word " hotmail":
$text = 'test hotmail test test test test';
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…