检查 php 字符串是否仅包含欧洲语言的字符



我想检查字符串是否只包含欧洲常见的字符、数字和特殊字符。我找到了诸如如何检查,如果 php 字符串仅包含英文字母和数字?之类的答案,但这不包括法语 é 和 è 或德语 äöüß 或罗马尼亚语 ă。我还想允许经常使用特殊字符,例如€,!§$%&/((=#|<>

是否有人有一套完整的套装,其中包含所有这些字符来检查它?

您可以使用p{Latin}测试拉丁字符,确保使用u正则表达式标志:

<?php
$tests = [
'éèäöüßäöüßäöüßäöü',
'abcdeABCDE',
'€, !"§$%&/()=#|<>',
'ÄäAa',
'*',
'Здравствуйте'
];
foreach ($tests as $test) {
if (!preg_match('/[^p{Latin}0-9€, !"§$%&/()=#|<>]/u', $test)) {
echo "$test is okayn";
}
}

指纹:

éèäöüßäöüßäöüßäöü is okay
abcdeABCDE is okay
€, !"§$%&/()=#|<> is okay
ÄäAa is okay

我认为您可以使用正则表达式

$re = '/[A-Za-z0-9]*/m';
$str = 'человек';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
var_dump($matches);

不在a-z 和 A-Z 中的字符是:

[^a-zA-Z]

因此,您可以使用以下内容:

Regex_CountMatches([String_Field],"[^a-zA-Z]")

由于此函数具有大小写选项(默认值 1 不区分大小写(,因此仅搜索 [^a-z] 也可能有效。

最新更新