假设我们有这样的随机字符串:
$ str_test =“faafŠščćžđščšđćčšžžfafssfaafžafž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
我们可以看到所有特殊字符都被两个字符“_”替换...结果应该是:
faaf_ _ ___ __ ___ ___ __ fa fssfa af_ af_sa f
faafŠ š čćž đš čšđ ćčš žž fa fssfa afž afžsa f
我已经尝试过编码但没有成功..我还想让函数执行多次preg_match而不是将“_ ”替换为“”......但这样做会很慢大文...
任何想法?
答案 0 :(得分:1)
$str=preg_replace("/[^0-9a-zA-Z ]/u", "_", $str_test);
注意'u'修饰符!说明: http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php#107498
If the _subject_ contains utf-8 sequences the 'u' modifier should be set, otherwise a pattern such as /./ could match a utf-8 *sequence as two to four individual ASCII characters*.
答案 1 :(得分:0)
为什么不在php多字节函数中使用构建?
mb_ereg_replace
是在这里使用的。 Manual