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

php多字节字符串正则表达式,php,utf-8,Php,Utf 8,我们有一个正则表达式来去除除“#”、“&”和“-”之外的非字母数字字符。下面是它的外观: preg_replace('/[^a-zA-Z0-9#&-*]/', '', strtolower($title)); 现在我们需要支持繁体中文字符串,上面的函数将不起作用。如何为繁体中文实现类似的功能 谢谢,你试过用mb_ereg_replace()代替preg_replace()吗?这可能会奏效 使用u修饰符: preg_replace(`/[^a-zA-Z0-9#&-*诶]/u`,

我们有一个正则表达式来去除除“#”、“&”和“-”之外的非字母数字字符。下面是它的外观:

preg_replace('/[^a-zA-Z0-9#&-*]/', '', strtolower($title));
现在我们需要支持繁体中文字符串,上面的函数将不起作用。如何为繁体中文实现类似的功能


谢谢,

你试过用mb_ereg_replace()代替preg_replace()吗?这可能会奏效


使用
u
修饰符:

preg_replace(`/[^a-zA-Z0-9#&-*诶]/u`, '', $string);
顺便说一下,不要使用strtolower(),因为它会打断您的字符串。使用
mb\u strtolower()


那么,哪些汉字是“字母数字”呢?一般来说,应该避免使用ereg,即使这个汉字在mb_uuu部分,并且没有被标记为不推荐使用。preg现在是PHP中的标准正则表达式接口,ereg本身有一天会消失。但是在mb_-部分中没有preg_替换,这就是为什么我从那里建议使用ereg。
mb_strtolower($string, 'UTF-8');