Автор Тема: Забрать страничку с другого сайта  (Прочитано 16707 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн AlieN

  • Абыр!=)
  • Ветеран
  • *****
  • Сообщений: 1315
  • +0/-1
  • 2
    • Просмотр профиля
Забрать страничку с другого сайта
« Ответ #15 : 14 Мая 2003, 17:20:40 »
kosm
Цитировать
:
Хм, а все-таки, почему мой регексп не прокатил?

$z = preg_replace("/^(.*)/","",$k);
В данном случае, необходимые данные будут в переменной $z а обрабатываются данные из $k
The Chemical Brothers - Hey Boy Hey Girl (User Friendly Mix)
Peter Presta pres - Set Sail(Peter Presta Apple Jaxx Dub) She S.Sunshine Feat Mila - Bring The Beat Back (Club Mix) Jerry Ropero - Home Alone (Dub Mix)

Оффлайн kosm

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 110
  • +0/-0
  • 0
    • Просмотр профиля
    • http://japanretro.tk
Забрать страничку с другого сайта
« Ответ #16 : 14 Мая 2003, 17:46:24 »
Странно, но у меня все равно с заголовок остается :( (как будто ничего и не происходило).

Оффлайн kosm

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 110
  • +0/-0
  • 0
    • Просмотр профиля
    • http://japanretro.tk
Забрать страничку с другого сайта
« Ответ #17 : 15 Мая 2003, 10:58:34 »
Ребят, ничего не понимаю, почему же у меня не хочет регексп работать, а?
Гляньте плиз (начало ответа на запрос):
Цитировать

HTTP/1.0 200 OK
Date: Thu, 15 May 2003 05:58:31 GMT
Server: Apache/1.3.12 (Unix) mod_ssl/2.6.2 OpenSSL/0.9.4 PHP/4.3.1
Cache-Control: max-age=3600
Expires: Thu, 15 May 2003 06:58:31 GMT
Content-Type: text/html
Age: 3324
X-Cache: HIT from maslan.maspeter.ru
Proxy-Connection: close



Пробую вырезать заголовок (хоть и подсказали как сделать через implode, но регеспы мне все равно надо, так хоть потренируюсь)...


$z 
preg_replace("/^(.*)<HTML>/"," ",$k);

В $k ответ на запрос вместе с заголовком. В $z хочу получить без заголовка. Что не так с регекспом?

Спасибо!

PS: Как вообще эта ф-ция обрабатывает этот массив $k? Построчно? Тогда как писать регесп? Или как единый текст (тогда не понятно почему не работает)? Может какие-то модификаторы надо ставить?
« Последнее редактирование: 15 Мая 2003, 11:26:27 от kosm »

Оффлайн semya

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 307
  • +0/-0
  • 0
    • Просмотр профиля
Забрать страничку с другого сайта
« Ответ #18 : 15 Мая 2003, 11:24:02 »
то что я говорил по поводу максимализма коснтрукции (.*) !!!! я же говорил, чтобы почитал по этому поводу! вопрос: как ты думаешь левая угловая скобка < попадает в эту конструкцию? так когда же ей осановиться? вот она все под себя и забирает, доходит до конца строки и не находит там , т.к. все уже забрала! Эта конструкция работает по максимальному принципу, понимаешь? поэтому если теоретически тегов в заголовках не будет, то использовать тебе нужно не (.*) а ([^<]+) - тогда должно получится, но вообще если тебе надо текст страницы отделить, то можно и проще и быстрее сделать это через explode("",$k)...

Оффлайн kosm

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 110
  • +0/-0
  • 0
    • Просмотр профиля
    • http://japanretro.tk
Забрать страничку с другого сайта
« Ответ #19 : 15 Мая 2003, 11:37:58 »
semya
Sorry, но я чего-то недогоняю :( Я же в конструкции явно указываю полный тег . Почему он должен рассатривать отдельно угловую скобку? А если использовать ([^<]+), и вдруг окажется не в начале строки?
Заголовок отделить через explode - понятно (кстати, спасибо за подсказку на счет разделения по тегу , сразу недопер :)
Но мне ведь еще всю страницу надо покоцать... Т.е. грубо говоря от того что я сейчас получил, в итоге должно остаться 10-15%. И если я уж в таком простом случае не могу уже что-то откоцать, то похоже я дальше вообще усядусь в лужу ;) Слушай, а есть где-нить нармальная статейка по поводу жадности этой конструкции (.*)? Хоть может разберусь, да вопросы дальше ами отпадут...

Еще раз спасибо за помощь!

Оффлайн trent

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 18
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.low.ru/
Забрать страничку с другого сайта
« Ответ #20 : 15 Мая 2003, 11:48:05 »
$body substr($k, -(strlen($k) - strpos($k"\\r\\n\\r\\n"$k)));
зачем всякие извраты?

Оффлайн kosm

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 110
  • +0/-0
  • 0
    • Просмотр профиля
    • http://japanretro.tk
Забрать страничку с другого сайта
« Ответ #21 : 15 Мая 2003, 12:22:39 »
trent
Ну вот, еще один способ вырезать заголовок :) Спасибо.
Т.е. ты предлагаешь коцать страницу не средствами регекспов?
Думаешь это удобно будет?

Оффлайн trent

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 18
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.low.ru/
Забрать страничку с другого сайта
« Ответ #22 : 15 Мая 2003, 13:24:12 »
>Думаешь это удобно будет?
это будет быстрее

Оффлайн semya

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 307
  • +0/-0
  • 0
    • Просмотр профиля
Забрать страничку с другого сайта
« Ответ #23 : 15 Мая 2003, 13:55:09 »
trent
Цитировать
это будет быстрее

однозначно, никто не спорит!
но не так универсально и функционально!

kosm
про жадность максимальных операторов я вычитал в отличной книге по регэкспам издательства питер... (вот тут http://www.piter.com/book_about.phtml?id=978531800056&web_ok=no ) в инете я такого хорошего материала по регэкспам не встречал, но это уже не по этой теме форума....
насчет того, что тебе потом надо коцать все: ты всегда тащишь одну и ту же страницу или ты хочешь таскать разные порезки? в любом случае я бы выдирал отдельно все что между тайтлами, и между боди... а там уже работал более целенаправленно

Оффлайн kosm

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 110
  • +0/-0
  • 0
    • Просмотр профиля
    • http://japanretro.tk
Забрать страничку с другого сайта
« Ответ #24 : 15 Мая 2003, 14:08:37 »
Да, страничка всегда одна и таже, но инфа меняется. При чем, в ней только заголовки новостей, а надо будет еще ходить по ссылке, брать новость (каждую) и вставлять в главную ниже заголовка (или отдельной страницей, тоже оптимизированой/покоцаной). Примерно так. Как думаешь, сложная задача?

Кстати, попробовал трой регексп
$z preg_replace("/([^<]+)<HTML>/i","<HTML>",$k);
Прокатил, но смысл его не понял :(
Можешь вкрадце объяснить, в чем прикол?
« Последнее редактирование: 15 Мая 2003, 14:16:24 от kosm »

Оффлайн semya

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 307
  • +0/-0
  • 0
    • Просмотр профиля
Забрать страничку с другого сайта
« Ответ #25 : 15 Мая 2003, 15:57:12 »
kosm
Цитировать
Можешь вкрадце объяснить, в чем прикол?


объясню, опираясь на данные из той книги что я советую сейчас всем... дело в том, что точка в регэкспах - это любой символ, ЛЮБОЙ, а значит и < тэги тоже! и поэтому у тебя весь текст полученный через сокет ( или как там ) все попадает туда, и общего совпадения не получается, а следовательно и менять нечего preg_replace()ом... чтобы этого не происходило (это ведь на самом деле правильно, так и работают регэкспы) пишем, что нам нужно любое количество символов, которые не являются открывающим тэгом (за это отвечает плюс и контрукция выбора [^<] = не левый тэг), регэксп ищет любой символ который не является левым тэгом, находит, видит плюс, знает что надо искать еще, еще находит, а птом находит этот тэг, что ему остается? перейти к следующей контрукции... а это он его находит... получается обшее совпадение, вот он его и меняет...

Цитировать
сложная задача?

абсолютно нет, но придется следить за тем, чтобы синтаксис на странице не поменялся...

Оффлайн rembo

  • Больной
  • Постоялец
  • ***
  • Сообщений: 219
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.v4.ru
Забрать страничку с другого сайта
« Ответ #26 : 16 Мая 2003, 08:32:11 »
Не в тему конечно, но все же. Разве не бывает для KПК специальных бовзеров? Че нить типа Lynx например?
программист должен все сделать так, чтоб потом ничего не делать

Оффлайн FreeSpace

  • Штатный лодырь
  • Ветеран
  • *****
  • Сообщений: 613
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.infinity.com.ua
Забрать страничку с другого сайта
« Ответ #27 : 16 Мая 2003, 09:23:44 »
rembo
Под WinCE есть (почти) полноценный IE :)
Или тебе нужен именно текстовый?
Программирование - это единственное искусство, которое способно воплотить столь уникальное сочетание эстетики и функциональности.

Оффлайн semya

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 307
  • +0/-0
  • 0
    • Просмотр профиля
Забрать страничку с другого сайта
« Ответ #28 : 16 Мая 2003, 09:48:42 »
rembo
согласен абсолютно не в тему!!!

Оффлайн kosm

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 110
  • +0/-0
  • 0
    • Просмотр профиля
    • http://japanretro.tk
Забрать страничку с другого сайта
« Ответ #29 : 16 Мая 2003, 11:05:09 »
rembo
Раз вопрос не в тему был вроде как ко мне, то все-таки отвечу (разок) :)
Браузер есть конечно, но есть такое понятие как канал (оффлайн новости, оптимизированные для КПКашного браузера IE или iSilo). Просто загонять сайт в КПК и смотреть через IE или iSilo не интересно потому, что как понимаешь у КПК экран не такой большой и всякие банеры, фреймы и тп просто не дают нормально просматривать контент. Поэтому я хочу парочку сайтов с новостями под себя заточить...

semya
Спасибо за пояснения.Конечно с трудом до меня доходит почему не работает конструкция .* :) Т.е. получается при таком выражении парсер просто берет весь текст (сразу), не пробегая по нему? Получается так? Потому как ты пишешь конструкция [^<]+ заставляет бежать по тексту в поисках < с начала текста, а потом уже берет следующее вхождение . Я прально тебя понял?

Сорри, если туплю, просто разобраться хочу, чтобы дальше двигаться.

PS: Книжку твою уже заказал, на следующей неделе должны подвезти...

PPS: Кстати, случаем не встречал какой-нить утилитки для отладки регекспов?

СПАСИБО!

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28