Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Регулярка? 
:(
    Опции темы
L0GA4
Дата 8.4.2006, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 22.6.2005

Репутация: нет
Всего: нет



Посылаю запрос к странице(GET'om), естественно получаю в ответ всю страницу....
но мне надо получить только то, что идет после переменной "p" скрипта "post.php" .

Пытался с помощью регулярки (в $answer хранится ответ от сервера, т.е страница)-
Код

 $answer =~ /dpost.php/;
 print $answer;

и получаю примерно вот это:
Код

<div class="blue-box"><div class="breaker"><a href="ndis.php?c=&tid=&t=&PHPSESSI
D=baaa2efe60d222fc9cc69306de9a560d"><b></b></a> by <a href="post.php?p=[color=darkred]123jo456[/color]&P
HPSESSID=baaa2efe60d222fc9cc69306de9a560d">123456</a>, <i>Category: <a href="lis
t.php?c=&PHPSESSID=baaa2efe60d222fc9cc69306de9a560d"></a></i></div><table cellpa
dding="0" cellspacing="0" border="0" width="100%"><tr><td height="80" width="80"
 rowspan="2"><img src="" border="0" align="left" width="80" height="80"></td><td
 valign="top"><div class="breaker"></div></td></tr><tr><td valign="bottom"><div
align="right"><i></i><br> - </div></td></tr></table></div><br></div><br>

это единственное ,что хоть как-то уменбшает обзор страницы. Но вот дальше не прет....
можно ли с помощью регулярки достать вот эту строку 123jo456 ? Эта строка может содержать любые символы ,буквы,цифры.

Help smile
Заранее благодарен.
PM MAIL   Вверх
nitr
Дата 8.4.2006, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



Код

#!perl
use strict;
my $str = q{<div class="blue-box"><div class="breaker"><a href="ndis.php?c=&tid=&t=&PHPSESSI
D=baaa2efe60d222fc9cc69306de9a560d"><b></b></a> by <a href="post.php?p=[color=darkred]123jo456[/color]&P
HPSESSID=baaa2efe60d222fc9cc69306de9a560d">123456</a>, <i>Category: <a href="lis
t.php?c=&PHPSESSID=baaa2efe60d222fc9cc69306de9a560d"></a></i></div><table cellpa
dding="0" cellspacing="0" border="0" width="100%"><tr><td height="80" width="80"
 rowspan="2"><img src="" border="0" align="left" width="80" height="80"></td><td
 valign="top"><div class="breaker"></div></td></tr><tr><td valign="bottom"><div
align="right"><i></i><br> - </div></td></tr></table></div><br></div><br>};

$str =~ /post.php\?p=.*?\](.+)?\[/smg;
print $1;


ну а твой примерно так:
Код

#!/usr/bin/perl
use strict;
use LWP::UserAgent;

my $ua = LWP::UserAgent->new;
my $res = $ua->get('http://my.url/');
my $content = $res->content;
$content =~ /post.php\?p=.*?\](.+)?\[/smg;
my $result = $1;


Это сообщение отредактировал(а) nitr - 8.4.2006, 14:41


--------------------
PM   Вверх
L0GA4
Дата 8.4.2006, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 22.6.2005

Репутация: нет
Всего: нет



спасибо!
работает smile
только одно но : квадратных скобок там нет, т.е 123jo456 - это я на форуме цвет хотел вставить

Код

#!/usr/bin/perl    
use strict;    
my $str = q{<div class="blue-box"><div class="breaker"><a href="ndis.php?c=&tid=&t=&PHPSESSI    
D=baaa2efe60d222fc9cc69306de9a560d"><b></b></a> by <a href="post.php?p=123sdfsf&P    
HPSESSID=baaa2efe60d222fc9cc69306de9a560d">123456</a>, <i>Category: <a href="lis    
t.php?c=&PHPSESSID=baaa2efe60d222fc9cc69306de9a560d"></a></i></div><table cellpa    
dding="0" cellspacing="0" border="0" width="100%"><tr><td height="80" width="80"    
 rowspan="2"><img src="" border="0" align="left" width="80" height="80"></td><td    
 valign="top"><div class="breaker"></div></td></tr><tr><td valign="bottom"><div    
align="right"><i></i><br> - </div></td></tr></table></div><br></div><br>};    

$str =~ /post.php\?p=(.+)?\&/smg;
print $1;


в этом коде все ок.

При попытке через IO::Socket
выводится так :
"123456&PHPSESSID=7fe5772f2d54cde28644f3dc33c158e1">123456</a>, <i>Category: <a href="list.php?c="
,т.е уже почти все отлично smile




PM MAIL   Вверх
nitr
Дата 8.4.2006, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



Цитата
При попытке через IO::Socket
выводится так :
"123456&PHPSESS

А разница? Просто ты через сокеты получаешь страницу... Ну а я считаю, что лучше через LWP smile

З.Ы.: Всегда пожалуйста...


--------------------
PM   Вверх
sharq
Дата 8.4.2006, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 23
Всего: 28



Цитата(nitr @ 8.4.2006, 20:07 Найти цитируемый пост)
Ну а я считаю, что лучше через LWP

не только лучше, а разумнее, не зря же этот модуль написан и он входит в стандартную поставку дистрибутива perl (хотя по составу дистрибутива можно подебатировать smile )

smile


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
L0GA4
Дата 9.4.2006, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 22.6.2005

Репутация: нет
Всего: нет



С IO::Socket все ок,а вот c помощью LWP я в ответ нифига не получаю.....

Проблему я решил просто обрезая &PHP+ все последующие символы....
Спасибо еще раз smile

PM MAIL   Вверх
nitr
Дата 9.4.2006, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



L0GA4,
Цитата

С IO::Socket все ок

а кто говорит, что не работает? А для твоего конкретного примера я сделал (имхо) верный ответ ;)
Код

$str =~ /post.php\?p=([^&]+)/smg;

так быстрей и меньше ;)


--------------------
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0457 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.