Web sitesi yaparken kullanıcıdan yorum, vb. alınacaksa veya forum gibi bir yapı var ise mutlaka küfürlü sözlere karşı önlem alınması bilinen bir gerçek. İnternette yaptığım araştırmada tam manasıyla küfür listesi ve iyi bir fonksiyon bulamadım. Bende bulduğum küfürlü kelimeleri bir liste haline getirdim. Ayrıca
http://altayalp.com/dosyalar/php-filter-kutuphanesi-ve-filtreleme.pdf adresinde Filtreleme ile ilgili çok faydalı bir yazı buldum ve burada geçen fonksiyonu naçizane özelleştirdim. Php ve Laravel konusunda bu forumda çok kaliteli, bilgili arkadaşlar var onlar mutlaka eksik ve hatalarım varsa görecek ve daha da geliştireceklerdir.
Şimdi bu fonksiyon olarak oluşturduğum ve adına kufur

dediğim fonksiyonun içinde kullandığım başka fonksiyonları da ekledimki kullanmak isteyenlerin işine yarasın. Ayrıca bu fonksiyonu service provider a ekleyip Laravel İçin Validation haline getirdim ve benim projemde çalışıyor.
Laravel 5.2 kullanıyorum
kufursuz Validation
namespace App\Providers;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
//Kufur Denetimi
Validator::extend('kufursuz', function($attribute, $value, $parameters, $validator) {
return $value == kufur($value);
});
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
}
function degistir($str) {
$kufur =[
"salak",
"manyak",
"aptal",
];
return str_replace($kufur,'****',$str);
}
function replaceSpace($string)
{
$string = preg_replace("/\s+/", " ", $string);
$string = trim($string);
return $string;
}
function kucuk_yap($gelen){
$gelen=str_replace('Ç', 'ç', $gelen);
$gelen=str_replace('Ğ', 'ğ', $gelen);
$gelen=str_replace('I', 'ı', $gelen);
$gelen=str_replace('İ', 'i', $gelen);
$gelen=str_replace('Ö', 'ö', $gelen);
$gelen=str_replace('Ş', 'ş', $gelen);
$gelen=str_replace('Ü', 'ü', $gelen);
$gelen=strtolower($gelen);
return $gelen;
}
function kufur($str){
$hamDeger = $str;
//Gelen parametre önce 2'den fazla olan boşluklardan temizlenir, sonra tamamen küçük harflere çevrilir.
$str = kucuk_yap(replaceSpace($str));
//Parametre içinde nokta "." karakteri varsa temizlenir.
$str = str_replace('.','',$str);
//Küçük Harfe Çevrilen değer filtredeki kelimelerle karşılaştırılır.
$kufursuz = filter_var($str, FILTER_CALLBACK, array('options'=>'degistir'));
//eğer fonksiyona gönderilen değerde küfür varsa filtrelenir, yoksa aynen geri döndürülür
if($kufursuz !== $str){ //Buradaki $str küçük harfe çevrilmiş.
return $kufursuz;
}else{
return $hamDeger;
}
}
Validation olarak kullanmak için;
$veri = $veriler;
$kurallar = array(
'foto' => 'required|image|max:2048|dimensions:min_width=100,min_height=100',
'ad' => 'kufursuz|required|regex:/^[\pL\s\-]+$/u|min:3|max:25',
'soyad' => 'kufursuz|required|regex:/^[\pL\s\-]+$/u|min:3|max:40',
);
$messages = array(
'foto.required' => 'Fotoğrafınızı eklemeyi unutmayınız.',
'foto.image' => 'Yanlızca .bmp, .gif, .jpeg veya .png uzantılı resim dosyaları kabul edilir.',
'foto.max' => 'Fotoğrafınız 2 MB (2048 KB)\'dan daha büyük olmamalıdır.',
'foto.dimensions' => 'Fotoğrafınız en az 100px genişliğinde ve yüksekliğinde olmalıdır.',
'ad.kufursuz' => 'Lütfen Argo Kelimeler Kullanmayınız',
'ad.required' => 'Adınızı boş bırakmayınız.',
'ad.regex' => 'Adınız sadece harflerden oluşmalıdır.',
'ad.min' => 'Adınız 3 harften az olamaz.',
'ad.max' => 'Adınız 25 karakterden fazla olamaz.',
'soyad.kufursuz' => 'Lütfen Argo Kelimeler Kullanmayınız',
'soyad.required' => 'Soyadınızı boş bırakmayınız',
);
$gecerlikci = Validator::make($veri, $kurallar, $messages);
if($gecerlikci->fails()) {
// Validasyondan geçemezse yapılacak işlemler.
}
Umarım İşinize yarar. Herkese kolay gelsin