Я знаю, как получить исходный код html через cUrl, но я хочу удалить комментарии в html-документе (я имею в виду, что находится между <!-- .. -->
). Кроме того, если я могу взять только BODY
html-документа. спасибо.
Удалить комментарии из html исходного кода
Ответ 1
Попробуйте 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>"
Ответ 2
Если в cUrl нет опции для этого параметра (и я подозреваю, что нет, но раньше я был не прав), вы можете, по крайней мере, проанализировать полученный HTML-код в своем сердечном содержимом с помощью PHP DOM parser.
Это, скорее всего, будет лучшим выбором в долгосрочной перспективе с точки зрения конфигурации и поддержки.
Ответ 3
Я бы подключил его к sed для регулярного выражения, что-то вроде
curl http://yoururl.com/test.html | sed -i "s/<!\-\-\s?\w+\s?\-\->//g" | sed "s/.?(<body>.?</body>).?/\1/"
Регулярные выражения могут быть неточными, но вы получаете идею...
Ответ 4
Реджикс решил эту проблему для меня следующим образом:
function remove_html_comments($html = '') {
return preg_replace('/<!--(.|\s)*?-->/', '', $html);
}