Merhaba arkadaşlar API sistemli bir video sitem için, video database'e eklenirken kelime filtremesi gerekli yardımlarınızı bekliyorum.
Örnektir..
$kontrol=mysql_query("select * from TABLO where baslik='$baslik'");
if(mysql_num_rows($kontrol)==0)
{
$ekle=mysql_query("INSERT INTO TABLO (baslik, kategori, video, hit) VALUES ('$baslik', '$kat', '$icerik', '1'");
} else {
mysql_query("UPDATE TABLO SET hit = hit + 1 WHERE baslik = '$baslik'"); }
}
Burada, belirlediğim kelimeler $baslik içinde geçtiğinde bu videoyu database'e eklemesin. İlgilenenlere şimdiden teşekkürler.
Kelime Filtreme Yardım..
9
●1.636
- 02-09-2010, 02:44:58Belirlediğiniz kelimeleri veritabanında tuttuğunuzu varsayıyorum. Örnek kod şöyle bi şey:
$q = mysql_query("SELECT * FROM yasaklikelimeler"); if(!$q) exit; $yasakli = 0; while($row = mysql_fetch_assoc($q)) { if(strpos($baslik, $row['kelime']) !== false) { ++$yasakli; } } if($yasakli > 0) { echo 'bu başlıkta kabul edilmeyen kelimeler var.'; } else { // işlemleriniz } - 02-09-2010, 02:57:35Hkan arkadaşın verdiğine alternatif array kullanarak ufak bir kod yazdım büüyk küçük harf duyarlıdır
$esgec = array("salak","manyak","hıyar"); $baslik = "bu video salak"; foreach($esgec as $kelime){ if(preg_match("/$kelime/i",$baslik)) { echo "baslik kayit edilmedi"; } } - 02-09-2010, 09:21:28Üyeliği durduruldu@metanek in yorumuna ek olarak pregmatch olunca düzenli ifadeye gireceginden düz stri_replace de olabilir. dizi halinde direk verbilirsiniz
- 02-09-2010, 15:33:58Üyeliği durdurulduhttp://tr.php.net/manual/en/function.strstr.php
tek değişkene yasaklı kelimeleri yazıp direk var mı yokmu kontrolü yapabilirsin.
$yasakli = 'asd jkasdjlas jklkjjkl';
if (!strstr($yasakli,$aranan_kelime)) {
//mysql işlemleri
}
aranan kelimeyi boşluklara göre bölüp yaparsan daha iyi olacaktır.
veya
http://tr.php.net/manual/en/function...e-callback.php
yasaklı kelimeleri bulup düzenli ifadelerle silebilirsin. - 04-09-2010, 04:04:02Hkan sağol kardeşim verdiğin kod sayesinde güzel bir filtreleme oldu.Seoya çevirdiği kelimelerin hepsi küçük olduğu için $seobas da filtreleme uyguladım böylece filtrelenecek kelimelerin büyük küçük harf duyarlılığını önledim.
function turkce($cevir) { $cevir=strtolower($cevir); $tr = array('ş','Ş','ı','İ','ğ','Ğ','ü','Ü','ö','Ö','Ç','ç'); $eng = array('s','S','i','I','g','G','u','U','o','O','C','c'); $cevir = str_replace($tr,$eng,$cevir); $cevir = eregi_replace('[^0-9A-Za-z]',"-",$cevir); $cevir = str_replace('--','-',$cevir); $cevir = str_replace('---','-',$cevir); return $cevir; } $seobas=turkce($baslik); $q = mysql_query("SELECT * FROM yasaklikelimeler"); if(!$q) exit; $yasakli = 0; while($row = mysql_fetch_assoc($q)) { if(strpos($seobas, $row['kelime']) !== false) { ++$yasakli; } } if($yasakli > 0) { echo 'bu başlıkta kabul edilmeyen kelimeler var.'; } else { $kontrol=mysql_query("select * from TABLO where baslik='$baslik'"); if(mysql_num_rows($kontrol)==0) { $ekle=mysql_query("INSERT INTO TABLO (baslik, seo, kategori, video, hit) VALUES ('$baslik', '$seobas', '$kat', '$icerik', '1'"); } else { mysql_query("UPDATE TABLO SET hit = hit + 1 WHERE baslik = '$baslik'"); } } } - 04-09-2010, 11:40:50Üyeliği durduruldusence bu iş için strstr ve strpos arasında ne kadar hız ve bellek kullanım farkı var?Hkan adlı üyeden alıntı: mesajı görüntüle
php de bu kadar önemsiz performansları göz önünde bulunduruyorsanız mysql içinde bulundurmanızı öneririm. her iş için mysql kullanılmaz, özellikle bu işlem için mysqlin adı bile geçmemeli ki soruyu soran arkadaşta ne yazıkki sizin varsayımınızla mysql kullanmış.
Hkan adlı üyeden alıntı: mesajı görüntüleKyo adlı üyeden alıntı: mesajı görüntüle - 05-09-2010, 21:45:32Yönetim paneli kontrollü güzel bi sansür modülü için mysql kullanmak akıllıcadır. Hem sonuçta herkes PHP bilmiyor. Engellenecek her kelime için PHP dosyasını açıp $degisken[] = 'engellenecekkelime'; yazacak değiller.sweatcell adlı üyeden alıntı: mesajı görüntüle
