为什么preg_replace删除变音符号?

时间:2016-11-15 11:37:40

标签: codeigniter preg-replace special-characters

我正在尝试为我的搜索表单创建一个preg_replace,但它也一直在替换变音符号...

Code:
    $zoekwoord = $this->input->get('q', TRUE);
    $zoekwoord = preg_replace('/[^a-zA-Z0-9_ %\[\]\.\(\)%&-]u/s', '', $zoekwoord);

Any idea how to keep special chars? (like ö)

1 个答案:

答案 0 :(得分:1)

您定义了删除除ASCII字母,数字,_和一些特殊字符之外的任何字符的模式。

您需要将[A-Za-z0-9_]替换为\w,并使用/u修饰符识别其Unicode。

使用

'/[^\w %[\].()%&-]+/u'

请注意,只有]需要在此字符类中进行转义。 /s修饰符是多余的,我相信您在模式的末尾添加了u的拼写错误。