我想用null替换这些字符[^ a-zа-з0-9_],但是当它的多字节字符串时我不能这样做。带西里尔字符的preg_replace
我试过用mb_ *,iconv,PCRE,mb_eregi_replace和u修饰符(用于PCRE),但都没有效果。
的mb_eregi_replace工作,但只输出正确的UTF8字符串,但它并不能取代的人物,当preg_replace函数使用相同的正则表达式工程..
这里是我的代码与Unicode的作品,但它不会取代文字。
function _data($data)
{
mb_regex_encoding('UTF-8');
return mb_eregi_replace('/[^a-zа-з0-9_]+/', '', $data);
}
var_dump(namespace\_data('Текст Removethis- and this _#$)(and also this $*@&$'));
,其结果是与特殊字符(#_ $ ..)时,就应更换他们,如果我改变的preg_replace函数(和没有Unicode),就应更换它们。
'a-з'看起来有点奇怪。是西里尔文的“a”而不是常规的ascii'a'?如果是ascii,那么你在这里指定了一个heckuva范围的字符。 –
其西里尔字母a。 –