是否有更简单的正则表达式可以从字符串中过滤非字母(如%¤#£?|等),我想在其中接受所有字母(还有特殊字母,如æøåôöñ等)。我是否必须在正则表达式中明确包含每个特殊字母还是有更聪明的方法
$filteredString = preg_replace('/[^a-zæøåÆØÅöôÖÔ 0-9]/i', '', $orgString);
附言。如您所见,我想接受空格作为唯一的非字母字符
pps。此外,不区分大小写的“i”似乎不适用于特殊字母
是否有更简单的正则表达式可以从字符串中过滤非字母(如%¤#£?|等),我想在其中接受所有字母(还有特殊字母,如æøåôöñ等)。我是否必须在正则表达式中明确包含每个特殊字母还是有更聪明的方法
$filteredString = preg_replace('/[^a-zæøåÆØÅöôÖÔ 0-9]/i', '', $orgString);
附言。如您所见,我想接受空格作为唯一的非字母字符
pps。此外,不区分大小写的“i”似乎不适用于特殊字母
/[^\w\s\pL]/u
请参阅php 正则表达式。这些都是单词字符、空格和 Unicode 字母。尾随u
表示 Unicode 处理。
您可以使用\w
单词字符(也包括下划线),也可以更好地使用u
unicode 字符的修饰符:
/[^\w\sæøåÆØÅöôÖÔ]/iu