Проблемы с этим.
Предположим, у меня есть параметр, состоящий из одного символа, и я только хочу принять буквенные символы. Как я могу определить, что переданный параметр является членом латинского алфавита ( a
– z
)?
Кстати, я использую 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. }