使用PHP我想检查字符串是否只包含字母字符(我不想允许任何数字或特殊字符,如!@#$%^& *)。 ctype_alpha()
对于这个目的来说似乎很棒。
问题是我想要允许重音字母,例如法语等等。例如,我想允许“Lórien”。
我知道ctype_alpha()
可以与set_locale()
一起使用,但对于这个用例来说似乎仍然有限,因为我想允许所有基于拉丁语言的字符。
任何想法如何最好地实现这一目标?
注意:在How can I detect non-western characters?发布的解决方案非常适合显式检测非拉丁字符,但它允许特殊字符和空格,我不想允许:
preg_match('/[^\\p{Common}\\p{Latin}]/u', $string)
我想要一些可以这样工作的东西,但是将允许的字符限制为 字母字符 (所以没有特殊的字符,比如!@#$%^&)。
答案 0 :(得分:5)
答案 1 :(得分:3)
这可能有效
[^\P{latin}\s\p{Punctuation}]
它全是拉丁语,但不是标点符号,也不是空格
其中\P
表示不是此属性
\p
表示此属性。
把它放在负面的
中 NOT,NOT Latin =包括所有拉丁文
NOT 标点符号=排除标点符号
NOT Whitespace = Exclude Whitespace