Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Получение HTML кода php скриптом


Автор: Borland 2.12.2008, 17:23
Всем добрый день.

Понимаю что тема изъезженая. много прочёл на форуме. Но ответа пока так и не нашёл.

Задача у меня  такая: Нужно получить html  код страницы. НО как вы понимаете на страницах могут быть JS, ... Ajax вставки, которые подтягивают данные и прочее. А мне не нужны эти скрипты. Мне нужен итоговый HTML  который отображается браузером. 

Я сейчас получаю содержимое через CURL , но либо не туда смотрю, либо curl не позволяет этого сделать. В общем задача не решена.

Кто-нибудь может что-то посоветовать?

Заранее благодарен.

Автор: skyboy 2.12.2008, 17:53
Цитата(Borland @  2.12.2008,  16:23 Найти цитируемый пост)
 НО как вы понимаете на страницах могут быть JS, ... Ajax вставки, которые подтягивают данные и прочее. А мне не нужны эти скрипты. Мне нужен итоговый HTML  который отображается браузером. 

Я сейчас получаю содержимое через CURL , но либо не туда смотрю, либо curl не позволяет этого сделать. В общем задача не решена.

т.е. на стороне сервера написать интерпретатор, который сфомирует нужный тебе html путем выполнения некоего заранее неизвестного javascript? нет, в общем виде это невозможно.

Автор: Валерия 2.12.2008, 18:30
Для этого подойдут регулярные выражения.
Нужно заменить на пустоту всё что находится между < и >, включая сами "<" и ">"
Почитайте на php.org про preg_replace, там в комментариях есть пример, как убрать все html теги.

Автор: Borland 2.12.2008, 18:32
А если учесть что сервер а 100% мой, нет ли каких либо методов реализовать подобную задачу?
может воспользоваться сторонними библиотеками или программами.
Сервак на Debian

Ведь поисковики то вроде как то это делают....

Автор: Валерия 2.12.2008, 18:48
Я ведь тебе показала решение smile
Раз ты в форум пхп запостил то и решение будет пхп smile
Я ошиблась, там не в комментариях, а в самом примере под номером 5:
Пример #5 Конвертор HTML в текст
<?php
// $document на выходе должен содержать HTML-документ.
// Необходимо удалить все HTML-теги, секции javascript,
// пробельные символы. Также необходимо заменить некоторые
// HTML-сущности на их эквивалент.

$search = array ("'<script[^>]*?>.*?</script>'si",  // Вырезает javaScript
                 "'<[\/\!]*?[^<>]*?>'si",           // Вырезает HTML-теги
                 "'([\r\n])[\s]+'",                 // Вырезает пробельные символы
                 "'&(quot|#34);'i",                 // Заменяет HTML-сущности
                 "'&(amp|#38);'i",
                 "'&(lt|#60);'i",
                 "'&(gt|#62);'i",
                 "'&(nbsp|#160);'i",
                 "'&(iexcl|#161);'i",
                 "'&(cent|#162);'i",
                 "'&(pound|#163);'i",
                 "'&(copy|#169);'i",
                 "'&#(\d+);'e");                    // интерпретировать как php-код

$replace = array ("",
                  "",
                  "\\1",
                  "\"",
                  "&",
                  "<",
                  ">",
                  " ",
                  chr(161),
                  chr(162),
                  chr(163),
                  chr(169),
                  "chr(\\1)");

$text = preg_replace($search, $replace, $document);
?>
Код



Автор: skyboy 2.12.2008, 20:06
Валерия, человек хочет получать не отдаваемый сервером текст, а уже модифицированный javascipt'ом. Так, Borland?

Автор: Borland 2.12.2008, 20:40
Цитата(skyboy @ 2.12.2008,  20:06)
человек хочет получать не отдаваемый сервером текст, а уже модифицированный javascipt'ом. Так, Borland?

Абсолютно верно.

Мне нужен итоговый HTML, представляющий собой суммарный результат статического html + результат работы скриптов на странице. Причём я не говорю что только JS. Там могут быть и VBscript ..... 


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)