我知道,這個問題已被問到,但不幸的是,沒有答案如何解決這個問題。錯誤:警告:strpos()[function.strpos]:偏移不包含在字符串中 - 找不到解決方案
這出現在我的日誌文件:
PHP消息:PHP的警告:strpos():偏移不包含在...串線479
不幸的是,我不明白是什麼原因導致這個問題以及如何解決它。我多次測試過這個函數(大$文本,短$文本,$垃圾文字和沒有$垃圾文字),但我從來沒有得到這個錯誤。那麼,我的用戶提交哪種文本會導致此錯誤?
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';
[「*還要注意的是字符串位置從0開始,而不是1 。*「](http://us.php.net/strpos#refsect1-function.strpos-returnvalues)。您將'1'而不是'0'作爲起始偏移量,並且您的用戶正在提交空字符串/單個字符。 – DCoder 2013-04-27 11:34:21