Bu soru sorulmuştur, ancak maalesef bu sorunun nasıl çözüleceğine dair herhangi bir cevap yoktur.Hata: Uyarı: strpos() [function.strpos]: Offset dizgi içermiyor - çözüm bulamıyor
Bu benim günlük dosyalarından görünür:
PHP mesajı: PHP Uyarı: strpos(): Offset 479
Maalesef on line in ... dizesinde yer almayan, ne neden anlayamıyorum Bu sorun ve nasıl düzeltileceği. Bu işlevi birçok kez test ettim (büyük $ metin, kısa $ metin, $ spam sözcükleri ve $ spam sözcükleri olmadan) ama asla bu hatayı almıyorum. Öyleyse, kullanıcılarım neden bu tür hatalar gönderir?
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);
}
İkinci soru: Bu fonksiyon dizesinin ilk kelimeyi filtre uygulamaz Nedense
. Bu dize işlevi kelime "hotmail" bulamazsa Örneğin : İlk soru için
$text = 'test hotmail test test test test';
[ "* Ayrıca bu dize pozisyonları 1 0 dan başlar ve not . * "] (http://us.php.net/strpos#refsect1-function.strpos-returnvalues). Başlangıç ofseti olarak '0' yerine' 1’i geçiyorsunuz ve kullanıcılarınız boş bir dize/tek karakter gönderiyor. – DCoder