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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Просьба помочь с RW, регулярка для веба, по шаблонам 
:(
    Опции темы
noobperl
Дата 20.5.2013, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Просьба помочь.
Если то, что я прошу, стоит денег/вознаграждения/гонорара - не вопрос, в личку.

Имеем в интернете страничку, которую генерирует веб-сервер. Там, на странице, голый текст, без кода.
Странички мои личные, чтоб визуально было понятно - укажу её ниже.
Событие "+" (онлайн) имеем: http://h-mem.ru/index1.htm
Событие "-" (оффлайн) имеем: http://h-mem.ru/index2.htm
для примера указал два разных файла, на самом деле данные генерируются в одну постоянную страницу, скажем index.htm

Независимо от события нужно из текста этих страниц обязательно вытащить (скажем на отдельную html страницу) и расположить упорядоченно:
Ф.И.О.: Василий Пупкин
гор.: Москва
р-н: Бутово
возр.: 25

В будущем хотелось бы данные (в виде переменных) сохранять в текстовый файл или в БД mysql, без разницы. Это уже другой этап.

Это сообщение отредактировал(а) noobperl - 20.5.2013, 14:43
PM MAIL   Вверх
alezzz
Дата 20.5.2013, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


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

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



Вы бы сильно упростили себе жизнь, если бы пары имя=значение отделялись чем-то кроме пробела, а то в "Василий Пупкин активность" нужно догадаться что является названием параметра, а что его значением, как в "казнить нельзя помиловать".

В общем виде это выглядит так:
Код

use strict;

my $text = 'имя=Василий Пупкин активность=on-line город=Москва район=Бутово возраст=25';
$text =~ s/\s([^ =]+=)/\n$1/g;
my @array = split(/\n/, $text);
my %state;
foreach (@array){
    my ($name, $value) = split(/=/);
    $state{$name} = $value;
}

use Data::Dumper;
print Dumper %state;


Можно сразу в БД закидывать.

Это сообщение отредактировал(а) alezzz - 20.5.2013, 16:20
PM MAIL   Вверх
noobperl
Дата 20.5.2013, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



alezzz
Спасибо, попробую реализовать ваш пример.
А по поводу упрощения жизни - дело в том, что текст не я генерирую, а сторонний чужой сервер, на которй я близко не могу повлиять.
Я просто при вел пример как бы...
В мыслях было использовать слово "активность" как "светофор красный"... Если слова "активность" нету в цепочке поиска, то следущее слово "город" также срабатывает как светофор. Всё что до "светофора" - будет входить в "имя". Как то так... Но как это реализовать через RW - не знаю.
PM MAIL   Вверх
DProf
Дата 23.5.2013, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

my ( $name, $act, $town, $region, $age);
my $text = 'имя=Василий Пупкин активность=on-line город=Москва район=Бутово возраст=25';

if    (
        $text =~ m/
            ^имя=        (?<name>.+)\s*
            активность=    (?<act>.+)\s*
            город=        (?<town>.+)\s*
            район=        (?<region>.+)\s*
            возраст=    (?<age>.+)\s*$
            /x
    )
{
    ( $name, $act, $town, $region, $age) = ( $+{name},$+{act},$+{town},$+{region},$+{age} );
}


Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Регулярные выражения | Следующая тема »


 




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


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

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