PHP仅允许UTF-8字符和空格

时间:2019-03-24 16:59:06

标签: php regex

我正在尝试使用正则表达式验证PHP中的字符串;它只能包含字母(包括拉丁字母,例如“á”,“õ”等)和空格。

我使用preg_replace('/\P{L}/u', '', $ str);摆脱了除拉丁字母之外的所有内容(包括空格)。我需要在正则表达式上进行哪些更改以包括空格?

1 个答案:

答案 0 :(得分:1)

您可以使用

preg_replace('/[^\p{L}\s]+/u', '', $str);

[^\p{L}\s]+模式将匹配1次或多次出现的任何字符,但不包括Unicode字母或空格。请注意,由于使用u修饰符,\s将识别任何Unicode空格字符。

请参见regex demo

详细信息

  • [^-与任何字符匹配的negated character class的开头
    • \p{L}-任何Unicode字母
    • \s-空格
  • ]+-1次或多次。

如果您有变音符号并希望保留它们,则必须将\p{M}添加到否定的字符类/[^\p{L}\p{M}\s]+/u中。