Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проверка на допустимые символы. Долой регулярные выражения.
 
 автор: Valleri   (19.07.2011 в 12:23)   письмо автору
 
 

Мне надо проверить строку на допустимые символы. Допустимы символы будут в массиве или в строке символов.
В массиве должны быть все символы алфавита кроме английских (это для опорного примера). В том числе знаки препинания, цифры и т.д.
Регулярные выражения мне не нужны и теперь после попыток не интересны. (Везде путаные формальные описания, документация изобилует неточностями и вымыслами и затрата времени на практическое изучение требует не соизмеримого с конкретной задачей времени.)

  Ответить  
 
 автор: Axxil   (19.07.2011 в 12:53)   письмо автору
 
   для: Valleri   (19.07.2011 в 12:23)
 

Ну если вы вообще категорически настроены против регулярных выражений, то можете разбить исходную строку на массив символов, уникализуете его и делаете пересечение с массивом допустимых символов array_intersect, после чего сравниваете длину результата с длиной исходного уникализованного массива. Если они она меньше, то значит проверка не пройдена.

Примерно так:

<?
$pattern 
= array(' ','.','а','б','я','г' ... );
$str 'Строка для примера';
$count count(array_unique(str_split($str)));
$res count(array_intersect($pattern,$a));

if(
$count $res) echo "Есть недопустимые символы";
?>

  Ответить  
 
 автор: Valleri   (19.07.2011 в 13:23)   письмо автору
 
   для: Axxil   (19.07.2011 в 12:53)
 

Мне набить строку из всех читабельных символов. Я не могу найти список всех символов. Я не знаю как правильно список всех читабельных символов назвать и сформировать запрос.
Вот эту строку мне и надо набить из всех читабельных символов. Остальное мне не важно.
$pattern = array(' ','.','а','б','я','г' ... ); 

То что не надо будет я удалю. Но для опоры нужна строка всех читабельных символов.Как правильно сказать я не знаю

  Ответить  
 
 автор: Саня   (19.07.2011 в 13:31)   письмо автору
 
   для: Valleri   (19.07.2011 в 13:23)
 

Ненужны и не интересны... ага. А потом городить орогод из 100 строк ненадёжного кода вместо того чтобы решить проблему одной строкой. Потратье немного времени на Фридла. Нигде более не видел настолько подробного, полного и понятного описания. Причём на русском языке.

  Ответить  
 
 автор: .....   (19.07.2011 в 13:33)
 
   для: Valleri   (19.07.2011 в 13:23)
 

Пуск->Выполнить->"charmap"
// may be

  Ответить  
 
 автор: Axxil   (19.07.2011 в 14:12)   письмо автору
 
   для: Valleri   (19.07.2011 в 13:23)
 

Советую всё же разобраться в регулярных выражениях. Иначе будете постоянно изобретать велосипеды на ровном месте.

Например шаблон для вашего случая выглядит так:

<?
if(preg_match('|[a-z]+|i',$str)){
  echo 
"Есть недопустимые символы";
}
?>

  Ответить  
 
 автор: Саня   (19.07.2011 в 14:21)   письмо автору
 
   для: Axxil   (19.07.2011 в 14:12)
 

Можно обойтись без плюса. И регулярка короче, и производительность чуть выше.

  Ответить  
 
 автор: Саня   (19.07.2011 в 13:55)   письмо автору
 
   для: Valleri   (19.07.2011 в 12:23)
 

<?
$str 
'123asbdn';
for ( 
$i 0$len strlen($str); $i $len; ++$i ) {
  
$ord ord($str[$i]);
  if ( (
$ord >= 65 && $ord <= 90) || ($ord >= 97 && $ord <= 122) ) {
    print 
'Строка содержит английские буквы';
    break;
  }
}
Подходит только для однобайтных кодировок.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования