PHP多字节字符串正则表达式

3

我们有一个正则表达式,可以去除非字母数字的字符,但'#'、'&'和'-'除外。以下是它的样子:

preg_replace('/[^a-zA-Z0-9#&-*]/', '', strtolower($title));

现在我们需要支持繁体中文字符串,而上面的功能无法实现。我该如何为繁体中文实现类似的功能呢?
谢谢。

1
那么哪些中文字符是“字母数字”? - NullUserException
2个回答

3
使用u修饰符:
preg_replace(`/[^a-zA-Z0-9#&-*诶]/u`, '', $string);

顺便提一下,不要使用strtolower(),因为它会破坏你的字符串。请使用mb_strtolower()

mb_strtolower($string, 'UTF-8');

0

一般情况下应该避免使用ereg,即使这个特定的函数在mb_部分中并没有被标记为过时。preg现在是PHP的标准正则表达式接口,而ereg本身将来会消失。 - Marc B
mb_-部分中没有 preg_replace 函数,因此我建议使用 ereg 函数。 - johangu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接