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

时间:2011-08-12 19:45:50

标签: php utf-8

我们有一个正则表达式去除非字母数字字符,除了'#','&'和' - '。这是它的样子:

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

现在我们需要支持繁体中文字符串,上面的功能不起作用。如何为传统中文实现类似的功能。

谢谢,

2 个答案:

答案 0 :(得分:3)

使用u修饰符:

preg_replace(`/[^a-zA-Z0-9#&-*诶]/u`, '', $string);

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

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

答案 1 :(得分:0)

您是否尝试过mb_ereg_replace()而不是preg_replace()?这可能会成功。

http://www.php.net/manual/en/function.mb-ereg-replace.php