Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Регулярное вырожение
Форумы портала PHP.SU » PHP » Программирование на PHP » Регулярное вырожение

Страниц (1): [1]
 

1. kuller - 06 Ноября, 2009 - 15:22:02 - перейти к сообщению
Никак не могу разобраться с регулярными вырожениями. второй день пробую сделать проверку. помогите пожалуста. Надо разрешить писать в форму только русские буквы, всё остальное нельзя
2. Nestor - 06 Ноября, 2009 - 15:47:02 - перейти к сообщению
if(preg_match("/[A-Za-z]/i",$string)){
die('Russian only');
} elseif(preg_match("/[А-Яа-я]/i",$string)){
//Ok
} else {}
3. kuller - 06 Ноября, 2009 - 16:41:49 - перейти к сообщению
Nestor пишет:
if(preg_match("[A-Za-z]",$string)){
die('Russian only');
} elseif(preg_match("[А-Яа-я]",$string)){
//Ok
} else {}

делал так. не работает.
и так делал
1. if(preg_match("/[A-Za-z]/",$name))]
2. if(preg_match("/[A-Za-z]$/",$name))
и подавление ошибок делал. на денвере не хочет работать, а на хосте нет возможности проверить
4. JustUserR - 06 Ноября, 2009 - 16:47:47 - перейти к сообщению
Помоему регулярные выражения не очень хорошо работают с русскими буковками - так как кодировка по существу может отличаться
5. kuller - 06 Ноября, 2009 - 17:02:21 - перейти к сообщению
JustUserR, эт чего значит, что при проверке кодировка может измениться? если да, как можно узнать на какую кодировку меняется? идейка одна появилась!!!
6. Nestor - 06 Ноября, 2009 - 18:35:12 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $a = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
  4. foreach ($a as $letter){
  5.         if (!is_bool(stripos($text,$letter))) {
  6.                 die('Not allowed!');
  7.         }
  8. }
  9.  

А в регулярке я ошибку сделал Радость
7. kuller - 06 Ноября, 2009 - 19:00:09 - перейти к сообщению
Nestor пишет:

А в регулярке я ошибку сделал Радость

видел вроде ошибку, там где слеш /i а надо так i/ правильно? слешом обозначается часть........ммм.... регулярного вырожения ??? Непонял! а значит i должно быть перед / ??? Непонял!
чёт тако вроде вчера читал.
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $a = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
  3. foreach ($a as $letter){
  4.         if (!is_bool(stripos($text,$letter))) {
  5.                 die('Not allowed!');
  6.         }
  7. }

спасиб работает
8. Nestor - 06 Ноября, 2009 - 19:34:05 - перейти к сообщению
не , я уже исправил...я слэш забыл
9. SAD - 06 Ноября, 2009 - 20:27:24 - перейти к сообщению
к этой теме, а как проверить, чтобы в строке были только числа?
10. Ch_chov - 06 Ноября, 2009 - 20:36:28 - перейти к сообщению
preg_match('/^[\d]+$/', $number);
11. SAD - 06 Ноября, 2009 - 20:38:42 - перейти к сообщению
самое оно, спасибо
12. Ch_chov - 06 Ноября, 2009 - 21:30:42 - перейти к сообщению
Цитата:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $a = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
  3. foreach ($a as $letter){
  4.         if (!is_bool(stripos($text,$letter))) {
  5.                 die('Not allowed!');
  6.         }
  7. }

Примерно тоже самое
PHP:
скопировать код в буфер обмена
  1. for($i = 'a'; $i != 'aa'; $i++)
  2.   if(stripos($text, $i) !== FALSE) exit('Not allowed!');

Только цифры и другие знаки все равно будут проходить...
Поэтому лучше все таки использовать регулярку.
13. movEAX - 06 Ноября, 2009 - 21:45:18 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  $str = 'Русские буквы';
  2.  echo preg_match('![^А-Яа-я\s]+!',$str);
  3.  
  4.  $str = 'English words';
  5.  echo preg_match('![^А-Яа-я\s]+!',$str);


Если смущает кодировка используйте iconv

 

Powered by ExBB FM 1.0 RC1