• 02-09-2010, 01:53:01
    #1
    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.
  • 02-09-2010, 02:44:58
    #2
    Belirlediğ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:35
    #3
    Hkan 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
    #4
    Ü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
    #5
    Üyeliği durduruldu
    http://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.
  • 03-09-2010, 21:28:50
    #6
    @sweatcell; php.net/manual/tr/function.strstr.php adresinde şöyle bi ibare var:

    Bilginize:

    İstediğiniz sadece samanlık içinde iğne var mı diye bakmaksa daha hızlı ve daha az bellek harcayan strpos() işlevini kullanın.
  • 04-09-2010, 04:04:02
    #7
    Hkan 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
    #8
    Üyeliği durduruldu
    Hkan adlı üyeden alıntı: mesajı görüntüle
    @sweatcell; php.net/manual/tr/function.strstr.php adresinde şöyle bi ibare var:

    Bilginize:

    İstediğiniz sadece samanlık içinde iğne var mı diye bakmaksa daha hızlı ve daha az bellek harcayan strpos() işlevini kullanın.
    sence bu iş için strstr ve strpos arasında ne kadar hız ve bellek kullanım farkı var?

    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üle
    Belirlediğ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
    }
    Kyo adlı üyeden alıntı: mesajı görüntüle
    Hkan 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'"); }
    }
    }
  • 05-09-2010, 21:45:32
    #9
    sweatcell adlı üyeden alıntı: mesajı görüntüle
    sence bu iş için strstr ve strpos arasında ne kadar hız ve bellek kullanım farkı var?

    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ış.
    Yö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.