为什么 preg_replace 删除变音符号?
Why is preg_replace removing umlauts?
我正在尝试为我的搜索表单创建一个 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 ö)
您定义了删除除 ASCII 字母、数字、_
和一些特殊字符以外的任何字符的模式。
您需要将 [A-Za-z0-9_]
替换为 \w
并使用 /u
修饰符使其识别 Unicode。
使用
'/[^\w %[\].()%&-]+/u'
注意在这个字符class里面只需要转义]
。 /s
修饰符是多余的,我相信你在模式末尾添加了 u
打错了字。
我正在尝试为我的搜索表单创建一个 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 ö)
您定义了删除除 ASCII 字母、数字、_
和一些特殊字符以外的任何字符的模式。
您需要将 [A-Za-z0-9_]
替换为 \w
并使用 /u
修饰符使其识别 Unicode。
使用
'/[^\w %[\].()%&-]+/u'
注意在这个字符class里面只需要转义]
。 /s
修饰符是多余的,我相信你在模式末尾添加了 u
打错了字。