我知道,这个问题已经被问过了,但不幸的是,没有答案如何解决这个问题。
这出现在我的日志文件中:
PHP 消息:PHP 警告:strpos():第 479 行的字符串中不包含偏移量
不幸的是,我不明白是什么导致了这个问题以及如何解决它。我多次测试了这个函数(用大的 $text,用短的 $text,用 $spam 词和没有 $spam 词),但我从来没有得到这个错误。那么,我的用户提交的哪些文本会导致此错误?
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);
}
第二个问题:
由于某种原因,此函数不会过滤字符串的第一个单词。例如在这个字符串函数中找不到单词“hotmail”:
$text = 'hotmail test test test test';
但是在这个字符串中它找到了“hotmail”这个词:
$text = 'test hotmail test test test test';