Я знаю, как получить исходный код html через cUrl, но я хочу удалить комментарии в html-документе (я имею в виду, что находится между <!-- .. -->
). Кроме того, если я могу взять только BODY
html-документа. Спасибо.
Попробуйте PHP DOM * :
$html = '<html><body><!--a comment--><div>some content</div></body></html>'; // put your cURL result here $dom = new DOMDocument; $dom->loadHtml($html); $xpath = new DOMXPath($dom); foreach ($xpath->query('//comment()') as $comment) { $comment->parentNode->removeChild($comment); } $body = $xpath->query('//body')->item(0); $newHtml = $body instanceof DOMNode ? $dom->saveXml($body) : 'something failed'; var_dump($newHtml);
Выход :
string(36) "<body><div>some content</div></body>"
Если в cUrl нет возможности для этого (и я подозреваю, что нет, но раньше я был не прав), вы можете, по крайней мере, разобрать полученный HTML-код на контент вашего сердца с помощью парсера PHP DOM .
Скорее всего, это будет лучшим выбором в долгосрочной перспективе с точки зрения конфигурации и поддержки.
Я бы перетащил его в sed для регулярного выражения, что-то вроде
curl http://yoururl.com/test.html | sed -i "s/<!\-\-\s?\w+\s?\-\->//g" | sed "s/.?(<body>.?</body>).?/\1/"
Регулярные выражения могут быть не точными, но вы получаете идею …