![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| Jeni |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 3.2.2008 Репутация: нет Всего: нет |
Добрый день.
Тема про поиск слов по шаблонам. Тема обсуждалась частично в другом топике, но… --- К примеру есть текст: price=много денюжки time=срочно date=завтра land=Бабруйский лес Надо по шаблонам (они выделены жирным текстом) найти слова, которые им присволи (они простым текстом, могут быть как русским текстом, так и на английском) В том другом топике после обсуждения было предложено реализовать образно в таком коде:
Но… если реализовать так, то браузер просто отображает список шаблонов: price time date land То есть как бы пусто, ничего не нашел, пустые поля, или ничего не присвоил… Ладно, попробовал упростить и чуток порезал от «# фрагмент кода»
А вот теперь всё отлично, сразу получаю: time=срочно То есть, если я задала сразу поиск по нескольким шаблонам – то не ищет (?), а когда задаю одно слово – находит прекрасно в любом месте. Плиз – в чем грабли? Почитала справочники по регулярным выражениям – не нашла в чем причина =( А может просто не понимаю где там искать, инфы выше крыши и крыша уже едет =( И еще… Если задать в моем случае поиск по шаблону «price», которому присваивается два слова через пробел «много мяса», то то найдет только первое слово "много"… Второго связанного слова ("мяса") не видит, а надо… Причем там может быть как два, так и три и четыре слова, а может и одно быть =( Но все-таки более приоритетно – именно поиск по нескольким разным постоянным шаблонам… Спасибо. P.S. Хнык! |
||||
|
|||||
| AlexPet |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 5.12.2007 Где: Брянск Репутация: 1 Всего: 1 |
Неправильное регулярное выражение для поиска
Попробуйте:
|
|||
|
||||
| Jeni |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 3.2.2008 Репутация: нет Всего: нет |
то AlexPet Поменяла строку как вы сказали, получила снова пустые поля =( price= time= date= land= |
||||
|
|||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
Jeni, может так сработает
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| AlexPet |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 5.12.2007 Где: Брянск Репутация: 1 Всего: 1 |
Видимо, ошибка была не только с регулярными выражениям, но и в чем-то другом...
У меня:
Вывод:
|
||||
|
|||||
| Jeni |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 3.2.2008 Репутация: нет Всего: нет |
AlexPet
попробовала ваш вариант "как есть" - работает с вашим примером. Но когда делаю под свои данные - не работает. Разница в чем? Вы объявляете текст уже в тексте скрипта, я же текст читаю с чужой WEB страницы чужого домена... Чтение идет прекрасно, никаках проблем Я сделала в скрипте чтоб сперва отображалось чтение print qq($page); и вижу что читается текст без проблем, псоле чего сразу же идет код по поиску по шаблонам - и я получаю пустые значения =(( Кстати что еще получила, может в этом соль. Чужая страница отображается в браузере как: price=много денюжки time=срочно date=завтра land=Бабруйский лес Но когда я просматриваю страницу в HTML коде, то вижу воо что: price=много денюжки time=срочно date=завтра land=Бабруйский лес То есть "внутри" слова расположены не в ряд, а с новой строки и вообще никаких тегов типа <br> - ничего... Добавлено через 5 минут и 30 секунд ginnie Вашу версию попробовала - аналогично как и другие, пустяе поля =( Добавлено через 8 минут и 3 секунды Насколько я понимаю (подозреваю), при $page = get("http://web.ru/text.htm"); чтение идет не буквально как мы видим, а наверно "изнутри", то есть из html кода запрашиваемой страницы.... |
|||
|
||||
| AlexPet |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 5.12.2007 Где: Брянск Репутация: 1 Всего: 1 |
Покажите, как вы загружаете текст страницы и куда. Если у вас одна переменная под весь текст (с переносами строк), то вместо
нужно расставить переносы строк (и, возможно, возврат кареток):
(может быть, вместо \n придется поставить \r\n) Это сообщение отредактировал(а) AlexPet - 8.2.2008, 15:58 |
||||
|
|||||
| Jeni |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 3.2.2008 Репутация: нет Всего: нет |
А "тама" изнутри слова расположены не в строчку получается...
Но все таки хоть одно слово он должен прочитать в первой строке price=много денюжки Добавлено через 3 минуты и 29 секунд AlexPet вот так в скрипте перед парсингом
Добавлено через 5 минут и 25 секунд ссылка условная, при юзе в IE браузере отображается:
при просмотре HTML:
|
||||||
|
|||||||
| Jeni |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 3.2.2008 Репутация: нет Всего: нет |
AlexPet
правила с тем, как вы показали, пробовала и с \r\n все равно - пусто, отображает:
Добавлено @ 16:10 Итоговый на данный момент код:
получаем в браузере:
P.S. Хнык!\n; Это сообщение отредактировал(а) Jeni - 8.2.2008, 16:12 |
||||||
|
|||||||
| AlexPet |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 5.12.2007 Где: Брянск Репутация: 1 Всего: 1 |
Дайте адрес той страницы, и как Вы получаете эту страницу (подозреваю, что $page = LWP::Simple::get();)
А то гадать можно долго |
|||
|
||||
| amg |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Это сообщение отредактировал(а) amg - 8.2.2008, 16:19 |
|||
|
||||
| Jeni |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 3.2.2008 Репутация: нет Всего: нет |
аха, вот это получилось с вашего фрагмента
ща попробую под свои масики переделать... А вдруг прокатит. Добавлено через 9 минут и 50 секунд amg в принципе ваш фрагмент вроде как работает, то есть он вытащил ВСЁ подряд, но и перемешал это всё в какой то хаос, то есть местами попеременял, но логика осталась, то есть каждому что было присвоено - всё на месте... Уже легче стало, значит есть шансы разобраться теперь, буду анализировать и думать Добавлено через 12 минут и 14 секунд Я хотела сказать, что мне надо не всё что там есть (там массив около 90 перем енных), а именно выборочно то, что мне надо, ну как уже писала выше: есть какое то постоянная $фифа, которой присваивается какие либо рандомные значения. Спасибки, лед тронулся вроде? |
||||||
|
|||||||
| Jeni |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 3.2.2008 Репутация: нет Всего: нет |
Может есть смысл сперва создать промежуточный массив сразу после чтения текста и потом уже рабоать только с образованным массивом? То есть не с данными удаленной web страницы, а именно с уже нашим массивом и из него сделать выборку необходимых данных, ну тех, что я написала выше... Ась?
|
|||
|
||||
| PanamOS |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 29.1.2008 Репутация: нет Всего: нет |
Jeni, дай пример файла, а лучше ссылку на ту страницу. А регэксп мог не работать банально из-за кодировок. Ведь не известно точно ли там ср1251.
|
|||
|
||||
| PanamOS |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 29.1.2008 Репутация: нет Всего: нет |
Ну вот показал(а) проблему и сразу стало ясно все с решением
А если надо что-то конкретное, как в первом примере, то
Это сообщение отредактировал(а) PanamOS - 8.2.2008, 21:16 |
||||
|
|||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |