优先考虑字符串验证消息
Prioritize string validation messages
在 PHP 中,我们如何才能将一项检查的结果消息优先于另一项检查?
我的 PHP 文件中有两个不同的 if 条件和两条不同的消息。
有些字符串两者都匹配,但即使 if (preg_match)
在脚本中位于 if !(preg_match)
上方,结果也会显示 !(preg_match)
的错误消息
示例:
if (preg_match('/^[\x{0600}-\x{06FF}]*$/u', $value)){
$return = $register_msg['ihc_error_please_write_yourname_in_english'];
}
if (!preg_match('~[eyuioa]~',$value)) {
$return = $register_msg['ihc_error_no_vowels_found'];
}
现在当用户通过阿拉伯字符输入他的名字时,虽然他的字符串符合两个条件,但不幸的是他得到 ['ihc_error_no_vowels_found']
而不是 ['ihc_error_please_write_yourname_in_english']
.
您可以使用
$register_msg = ['ihc_error_please_write_yourname_in_english' => 'English, please!', 'ihc_error_no_vowels_found' => 'No vowels!' ];
$value = 'سبعة';
$return = "";
if (preg_match('/^[\x{0600}-\x{06FF}]*$/u', $value)){
$return .= $register_msg['ihc_error_please_write_yourname_in_english'] . PHP_EOL;
} else if (preg_match('~^[A-Za-z]+$~',$value) && !preg_match('~[eyuioa]~',$value)) {
$return .= $register_msg['ihc_error_no_vowels_found'] . PHP_EOL;
}
echo $return;
查看 PHP demo 用阿拉伯语单词产生的结果
English, please!
并使用 SFGH
值(参见 this PHP demo)产生
No vowels!
preg_match('~^[A-Za-z]+$~',$value)
检查字符串是否只包含 1+ 个 ASCII 字母。
在 PHP 中,我们如何才能将一项检查的结果消息优先于另一项检查?
我的 PHP 文件中有两个不同的 if 条件和两条不同的消息。
有些字符串两者都匹配,但即使 if (preg_match)
在脚本中位于 if !(preg_match)
上方,结果也会显示 !(preg_match)
示例:
if (preg_match('/^[\x{0600}-\x{06FF}]*$/u', $value)){
$return = $register_msg['ihc_error_please_write_yourname_in_english'];
}
if (!preg_match('~[eyuioa]~',$value)) {
$return = $register_msg['ihc_error_no_vowels_found'];
}
现在当用户通过阿拉伯字符输入他的名字时,虽然他的字符串符合两个条件,但不幸的是他得到 ['ihc_error_no_vowels_found']
而不是 ['ihc_error_please_write_yourname_in_english']
.
您可以使用
$register_msg = ['ihc_error_please_write_yourname_in_english' => 'English, please!', 'ihc_error_no_vowels_found' => 'No vowels!' ];
$value = 'سبعة';
$return = "";
if (preg_match('/^[\x{0600}-\x{06FF}]*$/u', $value)){
$return .= $register_msg['ihc_error_please_write_yourname_in_english'] . PHP_EOL;
} else if (preg_match('~^[A-Za-z]+$~',$value) && !preg_match('~[eyuioa]~',$value)) {
$return .= $register_msg['ihc_error_no_vowels_found'] . PHP_EOL;
}
echo $return;
查看 PHP demo 用阿拉伯语单词产生的结果
English, please!
并使用 SFGH
值(参见 this PHP demo)产生
No vowels!
preg_match('~^[A-Za-z]+$~',$value)
检查字符串是否只包含 1+ 个 ASCII 字母。