2014-03-26 45 views
0

让我们说我们有随机字符串这样的:如何用preg_replace和PHP替换特殊字符?

$ str_test = “faafŠšCCZ的DJčšđCCS ZZ发fssfa AFZafžsaF”;

和大家做一些关于它的preg_replace函数:

preg_replace("/[^\da-z ]/i", "_", $str_test); 

而结果我得到的是:

faaf__ __ ______ ____ ______ ______ ____ fa fssfa af__ af__sa f 

所以,如果我们比较博特 - 输入和输出:

faaf__ __ ______ ____ ______ ______ ____ fa fssfa af__ af__sa f 
faafŠ š čćž đš čšđ ćčš žž fa fssfa afž afžsa f 

我们可以看到所有的特殊字符都被两个s替代ignt“_” ......结果应该是:

faaf_ _ ___ __ ___ ___ __ fa fssfa af_ af_sa f 
faafŠ š čćž đš čšđ ćčš žž fa fssfa afž afžsa f 

我曾与编码已经尝试过,但没有成功。我也想过做函数做多的preg_match一次,不是取代“_ ”与“ “......但这对大文本来说会很慢......

任何想法?

+0

你试过'/ [^ \ da-z] {1,2}/i'吗? –

+1

1)。确保你的php文件具有UTF-8编码而不用BOM。 2)。在preg_replace函数集标志处理这个作为unicode小写字母'u'后最后一个斜杠'/'或'我'标志 – przeqpiciel

回答

0

为什么不使用PHP的多字节功能构建?

mb_ereg_replace是在这里使用的。 Manual