fopen ()
или file_get_contents ()
URL: fopen ("http://google.com/", " r ")
http_get ()
из модуля PHP http
fsockopen ()
или stream_socket_client ()
wget
или curl
через system ()
Ни один из них не гарантирует быть доступным на вашем сервере.
Как уже говорилось в других ответах, либо стандартные функции потока PHP, либо cURL - ваш лучший выбор для извлечения HTML. Что касается удаления тегов, вот несколько подходов:
Вариант №1 : используйте расширение Tidy, если оно доступно на вашем сервере, для рекурсивного обхода дерева документа и возврата текста из узлов. Примерно так:
function textFromHtml(TidyNode $node) {
if ($node->isText()) {
return $node->value;
} else if ($node->hasChildren()) {
$childText = '';
foreach ($node->child as $child)
$childText .= textFromHtml($child);
return $childText;
}
return '';
}
Возможно, вам понадобится что-то более сложное, например, который заменяет теги
(где
$ node-> name == 'br'
) на новые строки, но для начала подойдет.
Затем загрузите текст HTML в объект Tidy и вызовите свою функцию в основном узле. Если у вас есть содержимое в строке, используйте:
$tidy = new tidy();
$tidy->parseString($contents);
$text = textFromHtml($tidy->body());
Вариант № 2 : используйте регулярные выражения для удаления всего между <
и >
. Вы могли (и, вероятно, должны) разработать более сложное регулярное выражение, которое, например, соответствовало бы только действительным начальным или конечным тегам HTML. Любые ошибки в синтаксисе страницы, такие как случайная угловая скобка в основном тексте, могут означать вывод мусора, если вы не будете осторожны. Вот почему Tidy так хорош (он специально разработан для очистки плохих страниц), но может быть недоступен.
В одну сторону:
$url = "http://www.brothersoft.com/publisher/xtracomponents.html";
$page = file_get_contents($url);
$outfile = "xtracomponents.html";
file_put_contents($outfile, $page);
Приведенный выше код является просто примером и не имеет (!) проверка и обработка ошибок.
Я настоятельно рекомендую вам воспользоваться посмотрите на класс SimpleHTML DOM;
SimpleHTML DOM Parser на SourceForge
С его помощью вы можете искать в дереве DOM, используя селекторы css, как с функцией $ () jQuery или функцией prototypeJS $$ ().
Хотя он работает с file_get_contents () для получения содержимого веб-страницы, вы можете передать ему HTML только с каким-то своим классом cURL (если вам нужно войти в систему и т. Д.)