PHP. Проверка символов строки – это символы символов в Великобритании или США.

Какой самый простой или лучший способ в 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); 

Вышеупомянутый массив будет содержать все символы в таблице ниже: alt text

то вы должны проверить снова строку, о которой идет речь, люди говорят, что используют regex, но я действительно не думаю, что это необходимо

$ string = "проверка простой строки";

 for($s=0;$s<strlen($string);$s++) { if(in_array(ord($string[$s]),$chars)) { //Invalid } }