2014-09-28 2 views
0

Я искал все здесь и в Интернете для решения этого.preg_match Письма Не только буквы?

Проблема в том, что я только хочу получать только буквы. Однако, если я введу как минимум одну букву, независимо от того, есть ли символы или цифры, тогда это займет ее. Как мне получить только писем?

if (!preg_match("/[a-zA-Z]/", $_POST["firstname"])) 
    $error = "<br />PLease enter a valid first name"; 
+0

Возможный дубликат [Как проверить форму POST содержит только буквы в нескольких полях, используя preg \ _match?] (http://stackoverflow.com/questions/7828684/ как-могу-я-чек-а-формы-пост-только-прод ains-letters-on-multiple-fields-using-preg) –

+0

Я пробовал это, и это не сработало, вот почему я спросил. Это еще позволяет мне вводить цифры и принимать – Anthony

ответ

3

Использование /^[a-zA-Z]+$/ вместо /[a-zA-Z]/:

if (!preg_match("/^[a-zA-Z]+$/", $_POST["firstname"])) 
    $error = "<br />PLease enter a valid first name"; 

Объяснение регулярное выражение:

  • ^ - Для того, чтобы соответствовать начало строки.
  • [] - Соответствует допустимым символам.
  • + - Чтобы соответствовать одному или нескольким символам того же типа.
  • $ - Чтобы соответствовать концу строки.
0

Anchor ваш матч. Смотрите этот код:

if (!preg_match("/^[a-zA-Z]+$/", $_POST["firstname"])) 
    $error = "<br />PLease enter a valid first name"; 
  • ^ и $ утверждает Thes терпкий и в конце матча.

PS У вас может быть неправильная орфография «Пожалуйста» в вашем коде - «L» находится в шапках.

-1

Ну, я не эксперт по регулярному выражению, но вы можете просто создать функцию, которая будет точно проверять, что вам нужно. Было бы куда-то вдоль этих линий (эта функция только проверяет строчных хотя):

$w = "hereisastr"; 
$i = 0; 
while (isset($w[$i])) 
{ 
    if ($w[$i] >= 'a' && $w[$i] <= 'z') 
    { 
    $i++; 
    } else 
    { 
    return false; 
    break; 
    } 
    return true; 
} 
+1

Вы хорошо дали мне подсказку, я не хотел все это отдавать ... – bastienbot

0

Для того, чтобы иметь дело с Юникод, вы должны использовать:

if (!preg_match("/^[- '\p{L}]+$/u", $_POST["firstname"])) 
    $error = "<br />PLease enter a valid first name"; 

Я добавил /u модификатор для unicode и символов - ' для сопоставления первого имени, такого как Jean-François

Смежные вопросы