Какой самый простой или лучший способ в PHP проверить достоверность или ложь, что строка содержит только символы, которые могут быть введены с использованием стандартной клавиатуры США или Великобритании с языком клавиатуры, установленным на английском или английском?
Чтобы быть более конкретным, я имею в виду использование одной ключевой депрессии с использованием или без использования клавиши переключения.
Я думаю, что персонажи следующие. 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ~ `! @ # $% ^ & * () _- + = {[}] | \ :;" '<,>.? / £ и пробел
Вы можете покрыть каждый символ ASCII [ -~]
(т. Е. Диапазон от места до тильды). Затем просто добавьте £
тоже и там вы идете (возможно, вам придется добавить и других персонажей, таких как ±
и §
, но для этого взгляните на раскладки клавиатуры США и Великобритании).
Что-то вроде:
if(preg_match('#^[ -~£±§]*$#', $string)) { // valid }
Для вас может быть полезно следующее регулярное выражение:
/^([a-zA-Z0-9!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~\t ])*$/m
Используйте это как:
$result = (bool)preg_match('/^([a-zA-Z0-9!"#$%&\'()*+,\-.\/:;<=>?@[\\\]^_`{|}~\t ])*$/m', $input);
Или создайте функцию повторного использования из этого кода:
function testUsUkKeyboard($input) { return (bool)preg_match('/^([a-zA-Z0-9!"#$%&\'()*+,\-.\/:;<=>?@[\\\]^_`{|}~\t ])*$/m', $input); }
Более простой способ проверить – проверить, существуют ли символы, а не они, поэтому сначала вам понадобится список символов, которые не существуют, вы можете получить их из диапазона ascii 128 – 255, где 0 – 127 является обычным ключ комплект.
Tio создает недопустимый массив, который вы можете сделать:
$chars = range(128,255);
Вышеупомянутый массив будет содержать все символы в таблице ниже:
то вы должны проверить снова строку, о которой идет речь, люди говорят, что используют regex, но я действительно не думаю, что это необходимо
$ string = "проверка простой строки";
for($s=0;$s<strlen($string);$s++) { if(in_array(ord($string[$s]),$chars)) { //Invalid } }