【发布时间】:2011-12-06 07:27:47
【问题描述】:
我想用 null 替换这些字符 [^a-zа-з0-9_],但是当它是多字节字符串时我不能这样做。
我尝试使用 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而不是常规 asciia?如果它是 ascii,则您在此处指定了一个 hekkuva 范围的字符。