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

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

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

 

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

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

тема: слова в регулярные выражения
 
 автор: sl1p   (27.01.2010 в 18:26)   письмо автору
 
 

пользовтаель пишет слова в поле формы.
они же потом используются в рег выражении.
Как поубирать, запретить все символы которые могут повлиять на выражение?("*", "." и т.д.)
Есть какая либо функция или вручную всё?

  Ответить  
 
 автор: Тень   (27.01.2010 в 18:29)
 
   для: sl1p   (27.01.2010 в 18:26)
 

preg_quote()

  Ответить  
 
 автор: sl1p   (27.01.2010 в 18:35)   письмо автору
 
   для: Тень   (27.01.2010 в 18:29)
 

ацке поклонэ (:

  Ответить  
 
 автор: sl1p   (27.01.2010 в 18:40)   письмо автору
 
   для: Тень   (27.01.2010 в 18:29)
 

хм, а если мне нужно сделать так:

в слове символ "*" я заменяю на "\w*"
т.е. как быть тут, кроме того как придумать "свой" другой символ?

  Ответить  
 
 автор: Тень   (27.01.2010 в 19:19)
 
   для: sl1p   (27.01.2010 в 18:40)
 

Ну и? Че не выходит?

  Ответить  
 
 автор: sl1p   (27.01.2010 в 19:53)   письмо автору
 
   для: Тень   (27.01.2010 в 19:19)
 

ну символ будет заменён на "\*"
что до preg_quote(), что после получится каряво.

  Ответить  
 
 автор: Тень   (27.01.2010 в 20:38)
 
   для: sl1p   (27.01.2010 в 19:53)
 

Вы не знаете как заменить "\*" на "\w*"?

  Ответить  
 
 автор: sl1p   (27.01.2010 в 21:22)   письмо автору
 
   для: Тень   (27.01.2010 в 20:38)
 

ну тогда и если пользователь введёт "\*" то оно будет тоже заменено целиком :)

  Ответить  
 
 автор: Тень   (27.01.2010 в 22:10)
 
   для: sl1p   (27.01.2010 в 21:22)
 

Вы хоть пробовали, перед тем, как это написать?

  Ответить  
 
 автор: sl1p   (27.01.2010 в 22:23)   письмо автору
 
   для: Тень   (27.01.2010 в 22:10)
 

ну нет, просто теоретически я так думаю:


ну допустим я ввожу в поле:

"слов*"

далее заменяю символ "*" на своё выражение: "\w*"
потом юзаем preg_quote() получаем "слов\w\*"
если порядок функций наоборот, то получим "слов\\w*"

потом я ввожу "слов\*"
ну результат понятен.

Не понимаю даже что тут пробовать :)

  Ответить  
 
 автор: Тень   (27.01.2010 в 22:29)
 
   для: sl1p   (27.01.2010 в 22:23)
 

[поправлено модератором]

  Ответить  
 
 автор: sl1p   (27.01.2010 в 22:34)   письмо автору
 
   для: Тень   (27.01.2010 в 22:29)
 

попробовал

[поправлено модератором]

  Ответить  
 
 автор: Тень   (27.01.2010 в 22:38)
 
   для: sl1p   (27.01.2010 в 22:34)
 

<?php

$s 
'\* *';
$pattern '/' str_replace('\\*''\\w*'preg_quote($s'/')) . '/i';
echo 
$pattern;

?>


/\\\w* \w*/i


А теперь покажи че ты пробовал. бугага

  Ответить  
 
 автор: sl1p   (27.01.2010 в 22:50)   письмо автору
 
   для: Тень   (27.01.2010 в 22:38)
 

\\\w*

[поправлено модератором]

  Ответить  
 
 автор: Тень   (27.01.2010 в 22:51)
 
   для: sl1p   (27.01.2010 в 22:50)
 

Вы, товарищ, не знаете, что бекслеш — спец. символ и его надо экранировать?

  Ответить  
 
 автор: sl1p   (27.01.2010 в 22:52)   письмо автору
 
   для: Тень   (27.01.2010 в 22:51)
 

ска точно не туда подумал)

спасибо котэ.

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

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