Ale*_*lov 5 php replace multibyte
我想用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 $*@&$'));
Run Code Online (Sandbox Code Playgroud)
当结果应该替换它们时,结果是使用特殊字符(#_ $ ..),如果我将函数更改为preg_replace(并且没有unicode),它应该替换它们.
hak*_*kre 10
只要输入字符串是UTF-8编码(如果没有,将其重新编码为UTF-8),preg_replace如果使用正确的正则表达式,则可以安全使用.
function _data($data)
{
return preg_replace('/[^\w_]+/u', '', $data);
}
var_dump(namespace\_data('????? Removethis- and this _#$)( and also this $*@&$'));
Run Code Online (Sandbox Code Playgroud)
\w =任何单词字符u (在结束时)=为正则表达式启用UTF-8.| 归档时间: |
|
| 查看次数: |
7989 次 |
| 最近记录: |