Tôi biết, câu hỏi này đã được hỏi, nhưng rất tiếc, không có câu trả lời nào để giải quyết vấn đề này.Lỗi: Cảnh báo: strpos() [function.strpos]: Offset không có trong chuỗi - không thể tìm thấy giải pháp
này xuất hiện trong log của tôi:
PHP nhắn: PHP Warning: strpos(): offset không chứa trong chuỗi trong ... trên đường dây 479
Thật không may, tôi không thể hiểu những gì gây ra vấn đề này và cách khắc phục. Tôi đã thử nghiệm chức năng này nhiều lần (với văn bản $ lớn, với văn bản $ ngắn, với $ từ thư rác và không có từ spam $) nhưng tôi không bao giờ nhận được lỗi này. Vì vậy, loại văn bản người dùng của tôi gửi gây ra lỗi này?
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);
}
Câu hỏi thứ hai:
Đối với một số lý do chức năng này không lọc từ đầu tiên của chuỗi. Ví dụ trong chuỗi chức năng này không tìm thấy chữ "hotmail":
$text = 'hotmail test test test test';
nhưng trong chuỗi này nó tìm thấy từ "hotmail":
$text = 'test hotmail test test test test';
[ "* Cũng lưu ý rằng vị trí chuỗi bắt đầu từ 0, và không 1 . * "] (http://us.php.net/strpos#refsect1-function.strpos-returnvalues). Bạn đang chuyển '1' thay vì' 0' làm giá trị bắt đầu và người dùng của bạn đang gửi một chuỗi trống/ký tự đơn. – DCoder