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


PHP - replace all non-alphanumeric chars for all languages supported

嗨,我实际上是在尝试替换字符串中的所有非字母数字字符,像这样:

mb_ereg_replace('/[^a-z0-9's]+/i','-',$string);

第一个问题是它不能从字符串中替换"."这样的字符。

其次,我想为这个方法添加对所有用户语言的多字节支持。

我该怎么做呢?

任何帮助都很感激,非常感谢。

尝试如下:

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

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

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

对于多字节支持,添加u修饰符并查看PCRE属性,即'p{Letter}:

$replaced = preg_replace('~[^0-9'p{Letter}]+~iu', '-', $string);

最短的方法是:

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

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

这个表达式代替了点。对于多字节使用u修饰符(UTF-8)