简体   繁体   English

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

[英]PHP replace special characters from a string

I have clean function for remove special caracter from string but that function also removing Turkish caracter (ı,ğ,ş,ç,ö) from string我有从字符串中删除特殊字符的清洁功能,但该功能也从字符串中删除土耳其语字符(ı,ğ,ş,ç,ö)

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

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

How can I fix it ?我该如何解决?

Add those characters you want to keep to preg, also add Upper cases if neededç I edited your code:添加那些你想保留到 preg 的字符,如果需要还添加大写我编辑了你的代码:

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

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

Test:测试:

$str='Merhaba=Türkiye 12345 çok çalış another one ! *, !@_';
var_dump(clean($str));
//Output: string(57) "Merhaba Türkiye 12345 çok çalış another one   "

Maybe you can try:也许你可以试试:

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

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

Which special characters you want to replace?您要替换哪些特殊字符? Maybe be it'll be easier to change a paradigm of cleaning from everything except ... to something concrete.也许将清洁范式从除...之外的所有事物更改为具体事物会更容易。

<?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');

?>

You can use iconv to replacing special characters like à->a, è->e您可以使用iconv来替换特殊字符,如 à->a、è->e

<?php
    $string = "ʿABBĀSĀBĀD";
    echo iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $string);
    // output: [nothing, and you get a notice]
    echo iconv('UTF-8', 'ISO-8859-1//IGNORE', $string);
    // output: ABBSBD
    echo iconv('UTF-8', 'ISO-8859-1//TRANSLIT//IGNORE', $string);
    // output: ABBASABAD
    // Yay! That's what I wanted!
    ?>

Credits:学分:

https://gist.github.com/swas/10643194 https://gist.github.com/swas/10643194

@dmp y @Nisse Engström @dmp y @Nisse Engström

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM