Разрешить только [az] [AZ] [0-9] в строке, используя PHP - PullRequest
7 голосов
/ 24 мая 2010

Как получить строку, содержащую только от a до z, от A до Z, от 0 до 9 и некоторые символы?

Ответы [ 6 ]

26 голосов
/ 24 мая 2010

Вы можете отфильтровать его следующим образом:

$text = preg_replace("/[^a-zA-Z0-9]+/", "", $text);

Что касается некоторых символов , вы должны быть больше конкретный

25 голосов
/ 24 мая 2010

Вы можете проверить свою строку (пусть $str), используя preg_match:

if(preg_match("/^[a-zA-Z0-9]+$/", $str) == 1) {
    // string only contain the a to z , A to Z, 0 to 9
}

Если вам нужно больше символов, вы можете добавить их до ]

9 голосов
/ 11 октября 2015

Не нужно регулярное выражение, вы можете использовать функции Ctype:

  • ctype_alnum: проверка буквенно-цифровых символов
  • ctype_alpha: проверка буквенных символов
  • ctype_cntrl: проверка управляющих символов
  • ctype_digit: проверка числовых символов
  • ctype_graph: Проверьте наличие любых печатаемых символов, кроме пробела
  • ctype_lower: проверка строчных букв
  • ctype_print: проверка на наличие печатаемых символов
  • ctype_punct: проверьте наличие любого печатаемого символа, который не является пробелом или буквенно-цифровым символом
  • ctype_space: Проверьте наличие пробельных символов
  • ctype_upper: проверка заглавных букв
  • ctype_xdigit: проверка на наличие символов, представляющих шестнадцатеричное число

В вашем случае используйте ctype_alnum, пример:

if (ctype_alnum($str)) {
    //...
}

Пример:

<?php
$strings = array('AbCd1zyZ9', 'foo!#$bar');
foreach ($strings as $testcase) {
    if (ctype_alnum($testcase)) {
        echo 'The string ', $testcase, ' consists of all letters or digits.';
    } else {
        echo 'The string ', $testcase, ' don\'t consists of all letters or digits.';

    }
}

Онлайн пример: https://ideone.com/BYN2Gn

1 голос
/ 24 мая 2010

Оба эти регулярных выражения должны сделать это:

$str = preg_replace('~[^a-z0-9]+~i', '', $str);

Или:

$str = preg_replace('~[^a-zA-Z0-9]+~', '', $str);
0 голосов
/ 17 августа 2017

Ярлык будет так же, как показано ниже:

if (preg_match('/^[\w\.]+$/', $str)) {
    echo 'Str is valid and allowed';
} else
    echo 'Str is invalid';

Здесь:

// string only contain the a to z , A to Z, 0 to 9 and _ (underscore)
\w - matches [a-zA-Z0-9_]+

Надеюсь, это поможет!

0 голосов
/ 24 мая 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...