PHP替换字符串中的特殊字符

PHP替换字符串中的特殊字符,php,Php,我有clean函数用于从字符串中删除特殊字符,但该函数也可以从字符串中删除土耳其字符(ı,ğ,ş,ç,ö) function clean($string) { $string = str_replace(' ', ' ', $string); $string = preg_replace('/[^A-Za-z0-9\-]/', ' ', $string); return preg_replace('/-+/', '-', $string); } 如何修复它?添加要保留

我有clean函数用于从字符串中删除特殊字符,但该函数也可以从字符串中删除土耳其字符(ı,ğ,ş,ç,ö)

function clean($string) {
   $string = str_replace(' ', ' ', $string); 
   $string = preg_replace('/[^A-Za-z0-9\-]/', ' ', $string); 

   return preg_replace('/-+/', '-', $string); 
}

如何修复它?

添加要保留在preg中的字符,如果需要,还可以添加大写字符。我编辑了代码:

function clean($string) {
    $string = str_replace(' ', ' ', $string);
    $string = preg_replace('/[^A-Za-z0-9\-ığşçöüÖÇŞİıĞ]/', ' ', $string);

    return preg_replace('/-+/', '-', $string);
}
测试:

也许你可以试试:

function clean($string) {
   $string = str_replace(' ', ' ', $string); 
   $string = preg_replace('/[^A-Za-z0-9ĞİŞığşçö\-]/', ' ', $string); 

   return preg_replace('/-+/', '-', $string); 
}

要替换哪些特殊字符? 也许这会更容易改变清洁的模式,除了。。。具体的东西

<?php

function garbagereplace($string) {

$garbagearray = array('@','#','$','%','^','&','*');
$garbagecount = count($garbagearray);
for ($i=0; $i<$garbagecount; $i++) {
$string = str_replace($garbagearray[$i], '-', $string);
}

return $string;
}

echo garbagereplace('text@#$text%^&*text');

?>

您可以使用
iconv
替换特殊字符,如a->a,è->e


它完全按照您告诉它的操作-删除任何不是A-Z、A-Z、0-9或
-
的字符。试着告诉它不要删除字母,例如:
\p{L}
例如:输入文本:Lisede sınıf ar'kad'aţm输出:Lisede s n f arkada m我需要:Lisede sınıf arkadaşm谢谢你我的朋友你把我从大麻烦中救了出来
<?php

function garbagereplace($string) {

$garbagearray = array('@','#','$','%','^','&','*');
$garbagecount = count($garbagearray);
for ($i=0; $i<$garbagecount; $i++) {
$string = str_replace($garbagearray[$i], '-', $string);
}

return $string;
}

echo garbagereplace('text@#$text%^&*text');

?>