为什么正则表达式会匹配否定字符类中列出的重音/unicode 字符? [重复]

问题描述 投票:0回答:3
$string1 = preg_replace('/[^A-Za-z0-9äöü!&_=\+-]/', ' ', $string4);

此正则表达式不应替换字符 äöü。 在 Ruby 中,它按预期工作。 但在 PHP 中,它还取代了 ä ö 和 ü。

有人可以给我提示如何修复它吗?

php regex unicode modifier multibyte
3个回答
2
投票

设置

u
模式修饰符(告诉 php 将正则表达式视为 UTF-8 字符串)。

'/[^A-Za-z0-9äöü!&_=\+-]/u'

0
投票

我认为这应该有效:

$string1 = preg_replace('/\[^A-Za-z0-9\pL!&_=\+-]/u', ' ', $string4 );

0
投票

Unicode 支持是 PHP 6 承诺的功能之一。

目前在php5

© www.soinside.com 2019 - 2024. All rights reserved.