| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > поиск значения в телe запроса |
| Автор: ImSave 12.11.2009, 16:19 | ||
в переменной $request содержится тело запроса от браузера, например:
нужно проверить существование в этом запросе поля Accept-Flags: и если да, то проверить есть ли в нем flag3 допустим. Спасибо заранее. забыл... и после проверки удалить эту строку из $request. |
| Автор: arto 12.11.2009, 17:42 |
| s#^Accept-Flags: .*flag2.*$##m && print "deleted"; |
| Автор: ImSave 12.11.2009, 19:33 | ||||||
так??:
прошу прощения, но не могли бы вы расписать по подробнее. типа:
|
| Автор: krypt3r 13.11.2009, 06:43 | ||
Попробуйте так
|
| Автор: ImSave 14.11.2009, 23:58 | ||||||||
чет не срабатывает =( Добавлено через 1 минуту и 16 секунд
Спасибо. работает так:
теперь как удалить всю эту строчку? |
| Автор: arto 15.11.2009, 00:13 |
| # print -l User-Agent:\ Opera/9.51\ \(Windows\ NT\ 6.0\;\ U\;\ MRA\ 5.4\ \(build\ 02620\)\;\ ru\) Host:\ cbuilder.ru Accept:\ text/html,\ application/xml\;q=0.9,\ application/xhtml+xml,\ image/png,\ image/jpeg,\ image/gif,\ image/x-xbitmap,\ \*/\*\;q=0.1 Accept-Language:\ ru-RU,ru\;q=0.9,en\;q=0.8 Accept-Charset:\ iso-8859-1,\ utf-8,\ utf-16,\ \*\;q=0.1 .... Accept-Flags:\ flaf1,\ flag2\; ... | perl -0777 -plne 's#^Accept-Flags: .*flag2.*$##m && print "deleted"; ' deleted User-Agent: Opera/9.51 (Windows NT 6.0; U; MRA 5.4 (build 02620); ru) Host: cbuilder.ru Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1 Accept-Language: ru-RU,ru;q=0.9,en;q=0.8 Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1 .... ... |
| Автор: ImSave 15.11.2009, 00:18 |
| Извиняюсь конечно..но я не понимаю как это применить...куча текста и что к чему? |
| Автор: arto 15.11.2009, 00:57 |
| если вы захотите, то сможете разобраться. |
| Автор: ImSave 15.11.2009, 12:55 | ||||||||||||
да. вы правы. Спасибо за старания!=) Добавлено @ 13:01
строка в теле запроса выглядит так:
далее пишу:
но получаю только:
т.е. только первый находит, а должен все. Что подправить? |
| Автор: amg 15.11.2009, 14:26 | ||||
Переменные $1, $2, ... ресетятся после каждого удачно сработавшего регулярного выражения. Потому так и получается. Исправить можно так:
Собственно, arto уже привел решение. В вашем коде первую строку нужно заменить на:
|
| Автор: ImSave 15.11.2009, 21:20 | ||||
| amg, спасибо работает. А вот с удалением...ну не срабатывает =((( вот пробую:
пробовал и:
|
| Автор: krypt3r 16.11.2009, 07:19 | ||||||||
Если уж пошла такая пляска, то
Вариант удаления
оставит пустое место между строками
Лучше уж
|
| Автор: ImSave 16.11.2009, 12:28 | ||
| Ребят, всем спасибо за помощь, но я вот не пойму, только на до мной Perl издевается?! вот для теста:
что ж такое то |
| Автор: ginnie 16.11.2009, 12:46 | ||||
ImSave, $request - это объект HTTP::Request, поэтому, чтобы удалить заголовок, надо использовать
т.е.
|
| Автор: ImSave 16.11.2009, 13:25 | ||
| ну наконец-то. ginnie, СПАСИБО огромное. Вот код который меня устраивает:
и я так понимаю проверку на Accept-Flags вначале можно не делать, поскольку никакого исключения не вылетит?! |
| Автор: ImSave 16.11.2009, 17:21 | ||||
| Еще вопросик по теме. Имеем например:
как достать первое значение? т.е. получить:
|
| Автор: ginnie 16.11.2009, 17:31 | ||
|
| Автор: ImSave 16.11.2009, 18:02 |
| ginnie, и снова вам ОГРОМНОЕ спасибо! |
| Автор: ImSave 6.4.2010, 19:09 |
| Здравствуйте. Не буду создавать тему. Вопрос: как в $request сделать замену, т.е. допустим 'Accept-Flags' заменить на 'A-F' |