preg_match重音字符

时间:2016-01-04 21:55:27

标签: php regex encoding

所以我在使用带有php的preg_match时遇到了问题。

我希望我的用户只使用有效字符填充名称字段。 例如:没有数字或特殊字符。

我的网站最终会成为双语,但我的大多数访客都是法国加拿大人

我更喜欢使用utf-8进行编码。 所以在我的文档的顶部,我有这个标签:

<meta charset="utf-8" />

我需要接受表格中的重音字符,我试过这个:

(preg_match('/^\p{L}+$/ui',$string))

但我不能用这种方式接受口音。

以下是名称可包含为字符

的示例
  

jean-françoisd'abiguäel

这几乎和它一样糟糕

Evryone好像(preg_match('/^\p{L}+$/ui',$string))正在工作,但我。

我需要这样的东西:

/^\p{L}(\p{L}+[- ']?)*\p{L}$/ui

但我需要让它发挥作用。

我的服务器是IIS(godaddy) PHP版本是5.4 默认时区设置为America / Montreal

谢谢!

2 个答案:

答案 0 :(得分:2)

这种模式应该有效:

/^\pL+(?>[- ']\pL+)*$/u

demo

但随意将其改编为更具异国情调的名称(例如带有尾随引号或撇号的名称)。

答案 1 :(得分:1)

~^([\p{L}-\s']+)$~ui

匹配以下名称:

  1. Jean-Françoisd'Abiguäel
  2. FrançoisHollande
  3. PèreNoël
  4. 查看regex 101上的演示。