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

Форум Регулярные Выражения

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

 

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

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

тема: нужно вырезать все запрещенные символы
 
 автор: serjinio   (03.08.2008 в 12:35)   письмо автору
 
 

Помогите составить регулярное выражение
Вырезать все
разрешить только буквы русские и английские без учета регистра (большие и маленькие),все цифры,знаки
  ! , " , '  , `,запятые, точки , _ , -, ( , ) , @ , ? , : , ; 

Заранее спасибо за помощь.

  Ответить  
 
 автор: AcidTrash   (03.08.2008 в 22:27)   письмо автору
 
   для: serjinio   (03.08.2008 в 12:35)
 

Если именно вырезать, то так
<?php
$text
="test";
$text preg_replace("#[^а-яёa-z\d!\"'`,\._-\(\)@\?:;]#i","",$text);
print 
$text;
?>


Если сделать проверку в строке на допустимые символы, то
<?php
$text
="test";
if(
preg_match("#^[а-яёa-z\d!\"'`,\._-\(\)@\?:;]+$#i",$text)){
print 
"ok";
}else{
print 
"no";
}
?>

  Ответить  
 
 автор: Trianon   (03.08.2008 в 23:01)   письмо автору
 
   для: AcidTrash   (03.08.2008 в 22:27)
 

Вы бы попробовали свой пример...
Минус экранировать надо. Либо ставить первым.

  Ответить  
 
 автор: AcidTrash   (03.08.2008 в 23:33)   письмо автору
 
   для: Trianon   (03.08.2008 в 23:01)
 

Замечания приняты, ну кто же не ошибается. ;)

  Ответить  
 
 автор: serjinio   (05.08.2008 в 20:14)   письмо автору
 
   для: AcidTrash   (03.08.2008 в 23:33)
 

Спасибо,очень помогло.!

  Ответить  
 
 автор: Zend72   (07.08.2008 в 11:40)   письмо автору
 
   для: Trianon   (03.08.2008 в 23:01)
 

А скажите разве буквы в верхнем регистре будут учитываться если (см. выделенное):
#^[а-яёa-z\d!\"'`,\._-\(\)@\?:;]+$#i

И еще один вопрос: регулярное выражение #[a-Zа-Я]# справоцировало у меня ошибку при подстановке в качестве параметра в функции preg_replace() Почему? Ведь так можно писать...

  Ответить  
 
 автор: AcidTrash   (07.08.2008 в 15:11)   письмо автору
 
   для: Zend72   (07.08.2008 в 11:40)
 

А скажите разве буквы в верхнем регистре будут учитываться
За это отвечает модификатор i.

  Ответить  
 
 автор: Zend72   (08.08.2008 в 10:06)   письмо автору
 
   для: AcidTrash   (07.08.2008 в 15:11)
 

Спасибо. Понятно. На счет модификатора i я знал, но у меня регулярное выражение почемуто не работало пока не дописал [А-ЯЁ], видимо я гдето ошибся вот и не работало... Что касается диапазонов символов, теперь буду знать =) Кстати про то, что Ё не в ходит в диапазон символов случайно выяснил, когда в словосочетании "Моё меню" пропала буква ё =)

  Ответить  
 
 автор: BinLaden   (08.08.2008 в 10:58)   письмо автору
 
   для: Zend72   (08.08.2008 в 10:06)
 

Наверное, локаль выставлена неправильная, вот и нет толку от "i" с кириллицей.

  Ответить  
 
 автор: Zend72   (08.08.2008 в 11:28)   письмо автору
 
   для: BinLaden   (08.08.2008 в 10:58)
 

Ясно спасибо =)

  Ответить  
 
 автор: xx77   (07.08.2008 в 17:56)   письмо автору
 
   для: Zend72   (07.08.2008 в 11:40)
 

> #[a-Zа-Я]#

диапазон символов a-Z как и второй ,из вашего класса символов ,не существует.

существует A-z но в него входят так-же символы `_^

а в А-я не хватает двух букв , Ёё

значит [A-Za-zА-яЁё]

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

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