Подтвердить что ты не робот

Определите, является ли символ буквенным

Проблемы с этим.

Скажем, у меня есть параметр, состоящий из одного символа, и я хочу только принимать буквенные символы. Как я могу определить, что переданный параметр является членом латинского алфавита (a - z)?

Кстати, я использую PHP Kohana 3.

Спасибо.

4b9b3361

Ответ 1

Используйте следующее предложение охраны в верхней части вашего метода:

if (!preg_match("/^[a-z]$/", $param)) {
    // throw an Exception...
}

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

if (!preg_match("/^[a-zA-Z]$/", $param)) {
    // throw an Exception...
}

Другим способом поддержки нечувствительности к регистру является использование модификатора нечувствительности к регистру /i:

if (!preg_match("/^[a-z]$/i", $param)) {
    // throw an Exception...
}

Ответ 2

http://php.net/manual/en/function.ctype-alpha.php

<?php
    $ch = 'a';
    if (ctype_alpha($ch)) {
        // Accept
    } else {
        // Reject
    }

Это также учитывает локаль, если вы правильно ее установили.

EDIT: Чтобы быть в полной мере, другие плакаты здесь, похоже, считают, что вам нужно убедиться, что параметр является единственным символом, или же параметр недействителен. Чтобы проверить длину строки, вы можете использовать strlen(). Если strlen() возвращает любое не-1 число, вы также можете отклонить этот параметр.

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

Ответ 3

preg_match('/^[a-zA-Z]$/', $var_vhar);

Метод вернет значение int: для no match возвращается 0 и для совпадений возвращает 1.

Ответ 4

Вы не можете использовать [a-zA-Z] для Unicode.

вот пример работы с Unicode,

if ( preg_match('/^\p{L}+$/u', 'my text') ) {
    echo 'match';
} else {
    echo 'not match';
}

Ответ 5

Вы можете попробовать:

preg_match('/^[a-zA-Z]$/',$input_char);

Возвращаемое значение указанной функции является истинным, если $input_char содержит один алфавит, иначе он является ложным. Вы можете использовать возвращаемое значение.

Ответ 6

Я бы использовал ctype, как предложил Nick, поскольку он не только быстрее, чем регулярное выражение, но и быстрее, чем большинство строковых функций, встроенных в PHP. Но вы также должны убедиться, что это единственный символ:

if (ctype_alpha($ch) && strlen($ch) == 1) {
    // Accept
} else {
    // Reject
}

Ответ 7

Это поможет надеяться. Это простая функция в php, называемая ctype_alpha

$mystring = 'a'
if (ctype_alpha($mystring))
{
    //Then do the code here.
}