检查 php 字符串是否只包含来自欧洲语言的字符
Check if php string only contains characters from an european language
我想检查一个字符串是否只包含欧洲常见的字符、数字和特殊字符。我找到了类似 How to check, if a php string contains only english letters and digits? 的答案,但这不包括法语 é 和 è 或德语 äöüß 或罗马尼亚语 ă。我还想允许经常使用特殊字符,如 €、!"§$%&/()=#|<>
有人有完整的集合,其中包含所有这些字符以供检查吗?
不在 a-z 和 A-Z 中的字符为:
[^a-zA-Z]
所以你可以使用类似的东西:
Regex_CountMatches([String_Field],"[^a-zA-Z]")
因为这个函数有大小写选项(默认值 1 不区分大小写),搜索 [^a-z] 也可能有效。
我想你可以使用正则表达式
$re = '/[A-Za-z0-9]*/m';
$str = 'человек';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
var_dump($matches);
您可以使用 \p{Latin}
测试拉丁字符,确保使用 u
正则表达式标志:
<?php
$tests = [
'éèäöüßäöüßäöüßäöü',
'abcdeABCDE',
'€, !"§$%&/()=#|<>',
'ÄäAa',
'*',
'Здравствуйте'
];
foreach ($tests as $test) {
if (!preg_match('/[^\p{Latin}0-9€, !"§$%&\/()=#|<>]/u', $test)) {
echo "$test is okay\n";
}
}
打印:
éèäöüßäöüßäöüßäöü is okay
abcdeABCDE is okay
€, !"§$%&/()=#|<> is okay
ÄäAa is okay
我想检查一个字符串是否只包含欧洲常见的字符、数字和特殊字符。我找到了类似 How to check, if a php string contains only english letters and digits? 的答案,但这不包括法语 é 和 è 或德语 äöüß 或罗马尼亚语 ă。我还想允许经常使用特殊字符,如 €、!"§$%&/()=#|<>
有人有完整的集合,其中包含所有这些字符以供检查吗?
不在 a-z 和 A-Z 中的字符为:
[^a-zA-Z]
所以你可以使用类似的东西:
Regex_CountMatches([String_Field],"[^a-zA-Z]")
因为这个函数有大小写选项(默认值 1 不区分大小写),搜索 [^a-z] 也可能有效。
我想你可以使用正则表达式
$re = '/[A-Za-z0-9]*/m';
$str = 'человек';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
var_dump($matches);
您可以使用 \p{Latin}
测试拉丁字符,确保使用 u
正则表达式标志:
<?php
$tests = [
'éèäöüßäöüßäöüßäöü',
'abcdeABCDE',
'€, !"§$%&/()=#|<>',
'ÄäAa',
'*',
'Здравствуйте'
];
foreach ($tests as $test) {
if (!preg_match('/[^\p{Latin}0-9€, !"§$%&\/()=#|<>]/u', $test)) {
echo "$test is okay\n";
}
}
打印:
éèäöüßäöüßäöüßäöü is okay
abcdeABCDE is okay
€, !"§$%&/()=#|<> is okay
ÄäAa is okay