代码之家  ›  专栏  ›  技术社区  ›  ferhado

php正则表达式任何语言的任意字母

  •  0
  • ferhado  · 技术社区  · 5 年前

    我正在尝试使用regex在php中创建自己的路由, 我的示例在名称为latain时返回true,但在名称为阿拉伯语时返回false

    preg_match('#^(en/users/(?<name>[\p{L}\p{Nd}\_\-\+]+))$#', 'en/users/علي+عثمان')
    

    我做错什么了?

    1 回复  |  直到 5 年前
        1
  •  1
  •   Havenard    5 年前

    要匹配阿拉伯文字,必须使用 \p{Arabic} 而不是 \p{L} ,并设置图案修改器 u 以启用UTF-8支持。

    就像这样:

    preg_match('#^(en/users/([\p{L}\p{Ll}\p{Arabic}\p{Nd}\_\-\+]+))$#u', 'en/users/علي+عثمان')
    

    工作示例: https://ideone.com/Zwrnpg