Расставьте приоритеты сообщений проверки строки - PullRequest
0 голосов
/ 07 июня 2018

В PHP, как мы можем расставить приоритеты сообщения результата одной проверки над другим?

У меня два разных условия if в моем файле PHP с двумя разными сообщениями.

Некоторые строки совпадаютоба, но даже если 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'].

1 Ответ

0 голосов
/ 07 июня 2018

Вы можете использовать

$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 с арабским словом:

English, please!

И со значением SFGH (см. эта демонстрация PHP ) дает

No vowels!

preg_match('~^[A-Za-z]+$~',$value) проверяет, состоит ли строка только из 1+ букв ASCII.

...