arada da geçmesini istemiyorsak preg_match içindekileri yer değiştirmek yeterli olacaktır. istediğinizi en başta bu kadar net açıklasanız tek seferde yardım bulmuş olacaktınız
<?php
function customSearch($forbiddennames, $stringtocheck)
{
$turkish = array("ı", "ğ", "ü", "ş", "ö", "ç","İ","Ğ","Ü","Ş","Ö","Ç");
$english = array("i", "g", "u", "s", "o", "c","i", "g", "u", "s", "o", "c");
foreach ($forbiddennames as $name) {
$stringtocheck = strtolower(str_replace($turkish,$english,$stringtocheck));
if (preg_match("/$name/i", $stringtocheck) || (preg_match('/\[.*?\]/i',$stringtocheck) == true)) {
return false;
}
}
}
$forbiddennames= array(1 => 'Admin', 'kufur', 'Root');
var_dump(customSearch($forbiddennames, 'ADMİN'));
var_dump(customSearch($forbiddennames, 'zadmin'));
var_dump(customSearch($forbiddennames, 'murtaza'));
var_dump(customSearch($forbiddennames, 'Xkufurlu'));
var_dump(customSearch($forbiddennames, '[t4st]'));
?>debug için dbgr.cc/_3
Yasaklı kelimeler için yönetim paneli kullanılıyor, bunlar yönetime dair yanıltıcı isimler, argo kelimeler, reklam içeren unsurlar olarak güncellenecek ve dizi olarak listelenip karşılaştırılacak. eval.in test kodunda[*] olan karşılaştırma tamam ama dizi listesi 1e1 uyduğunda fonksiyon çalışıyor. dizi listesindeki betiklerin ön-arka ek konulduğunda devam izni veriyor