Intereting Posts

Разрешить только в строке с использованием PHP

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

Solutions Collecting From Web of "Разрешить только в строке с использованием PHP"

Вы можете проверить свою строку (пусть $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 } 

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

Вы можете отфильтровать его так:

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

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

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

  • ctype_alnum : проверьте буквенно-цифровые символы (символы)
  • ctype_alpha : проверьте буквенный символ (символы)
  • ctype_cntrl : Проверить управляющий символ (ы)
  • ctype_digit : проверьте числовой символ (ы)
  • ctype_graph : проверьте наличие любых печатных символов, кроме пробелов
  • ctype_lower : проверьте строчный символ (символы)
  • ctype_print : проверка для печати символов (ов)
  • ctype_punct : проверьте наличие любого 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

Почему эти «символы» там в первую очередь? Мне кажется, что вы читаете текст из источника, который закодирован как UTF-16, но вы декодируете его как нечто другое, например latin1 или ASCII.

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

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

Или:

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

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

Ярлык будет также ниже:

 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_]+ 

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