Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-替换所有受支持语言的所有非字母数字字符_Php_Regex_String_Replace_Multibyte - Fatal编程技术网

PHP-替换所有受支持语言的所有非字母数字字符

PHP-替换所有受支持语言的所有非字母数字字符,php,regex,string,replace,multibyte,Php,Regex,String,Replace,Multibyte,嗨,我正在尝试替换字符串中的所有非字母数字字符,如下所示: mb_ereg_replace('/[^a-z0-9\s]+/i','-',$string); 第一个问题是它不替换字符串中的字符,如“” 其次,我想在这个方法中添加对所有用户语言的multybite支持 我该怎么做 感谢您的帮助。它应该将替换为-,您可能首先混淆了数据 对于多字节支持,添加u修饰符并查看,即\p{Letter}: $replaced = preg_replace('~[^0-9\p{Letter}]+~iu', '-

嗨,我正在尝试替换字符串中的所有非字母数字字符,如下所示:

mb_ereg_replace('/[^a-z0-9\s]+/i','-',$string);
第一个问题是它不替换字符串中的字符,如

其次,我想在这个方法中添加对所有用户语言的multybite支持

我该怎么做


感谢您的帮助。

它应该将
替换为
-
,您可能首先混淆了数据

对于多字节支持,添加
u
修饰符并查看,即
\p{Letter}

$replaced = preg_replace('~[^0-9\p{Letter}]+~iu', '-', $string);
请尝试以下操作:

preg_replace('/[^\p{L}0-9\s]+/u', '-', $string);

在正则表达式上使用
u
标志时,
\p{L}
(和
\p{Letter}
)匹配任何Unicode字母类别中的任何字符

此表达式确实替换了点。对于多字节使用
u
修饰符(UTF-8)。

最短的方法是:

$result = preg_replace('~\P{Xan}++~u', '-', $string);

\p{Xan}
包含所有语言中的数字和字母,因此
\p{Xan}
包含所有非字母或数字的内容。

只需将句点添加到字符列表中即可^a-z0-9\s---至于“添加多字节支持”,如果你的意思是替换重音符号之类的,我只知道用é=>e这样的东西制作一个巨大的数组,并将其用于strtr。@Ariane可以吗?我是说我已经有月经了!?“否”对于重音不重要;)天哪,伙计,我用了mb_ereg_replace()对不起,我更新了问题@AlixAxel@badbetonbreakbutbedbackbone:与Perl兼容的正则表达式(
preg
)比扩展正则表达式(
ereg
)更强大。天哪,我用了mb_ereg_replace()对不起,我更新了问题@F.js我应该改用preg_replace()吗p我对
mb_ereg_replace()
不太了解,但是
preg_replace()
应该可以工作,所以切换肯定是一个选项。天哪,伙计,我用了mb_ereg_replace(),对不起,我更新了问题@ziarno谢了,但是mb_ereg_replace()不是更好?你能告诉我是否需要切换到preg_replace()吗?为什么P@badbetonbreakbutbedbackbone:否。结尾的u修饰符使模式可以使用preg_*函数处理unicode。嗯,mb_ereg函数将消失。preg_*函数更快,并且支持unicode。