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

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

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

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

Благодарю.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Можешь попробовать:

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

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

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

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

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

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