Строковые символы проверки PHP - символы клавиатуры Великобритании или США - PullRequest
5 голосов
/ 06 января 2011

Какой самый простой или лучший способ в PHP проверить значение true или false, если строка содержит только символы, которые можно набирать с помощью стандартной клавиатуры США или Великобритании с языком клавиатуры, установленным на британский или американский английский?

Чтобы быть немного более конкретным, я имею в виду использование нажатия одной клавиши с использованием клавиши Shift или без нее.

Я думаю, что символы следующие.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ~ `! @ # $% ^ & * () _- + = {[}] | \ :;" '<,>.? / £ и пробел

Ответы [ 3 ]

4 голосов
/ 06 января 2011

Вы можете покрыть каждый символ ASCII на [ -~] (т. Е. Диапазон от пробела до тильды).Затем просто добавьте £, и все готово (вам может понадобиться добавить и другие символы, такие как ± и §, но для этого посмотрите раскладки клавиатуры в США и Великобритании).*

Что-то вроде:

if(preg_match('#^[ -~£±§]*$#', $string)) {
    // valid
}
1 голос
/ 06 января 2011

Вам может пригодиться следующее регулярное выражение:

/^([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);
}
0 голосов
/ 06 января 2011

Более простой способ проверить - это проверить, существуют ли символы, а не их, поэтому сначала вам понадобится список несуществующих символов, вы можете получить их из диапазона ascii 128 - 255, где как 0 - 127это обычный набор ключей.

Tio создайте недопустимый массив, который вы можете сделать:

$chars = range(128,255);

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

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

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

for($s=0;$s<strlen($string);$s++)
{
    if(in_array(ord($string[$s]),$chars))
    {
        //Invalid
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...