Я "пытаюсь" очистить веб-страницу со следующими структурами на странице:
<p class="row">
<span>stuff here</span>
<a href="http://www.host.tld/file.html">Descriptive Link Text</a>
<div>Link Description Here</div>
</p>
Я очищаю веб-страницу с помощью curl:
<?php
$handle = curl_init();
curl_setopt($handle, CURLOPT_URL, "http://www.host.tld/");
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
$html = curl_exec($handle);
curl_close($handle);
?>
У меня естьпровел некоторое исследование и обнаружил, что я не должен использовать RegEx для анализа HTML, который возвращается из curl, и что я должен использовать PHP DOM.Вот как я это сделал:
$newDom = new domDocument;
$newDom->loadHTML($html);
$newDom->preserveWhiteSpace = false;
$sections = $newDom->getElementsByTagName('p');
$nodeNo = $sections->length;
for($i=0; $i<$nodeNo; $i++){
$printString = $sections->item($i)->nodeValue;
echo $printString . "<br>";
}
Теперь я не притворяюсь, что полностью понимаю это, но у меня есть суть, и я получаю нужные разделы.Единственная проблема заключается в том, что я получаю только текст HTML-страницы, как будто я скопировал его из окна браузера.То, что я хочу, это фактический HTML, потому что я хочу извлечь ссылки и использовать их, например, так:
for($i=0; $i<$nodeNo; $i++){
$printString = $sections->item($i)->nodeValue;
echo "<a href=\"<extracted link>\">LINK</a> " . $printString . "<br>";
}
Как видите, я не могу получить ссылку, потому что я получаю только текст веб-страницы, а не источник , как я хочу.Я знаю, что "curl_exec" тянет HTML, потому что я пробовал именно это, поэтому я считаю, что DOM каким-то образом удаляет нужный мне HTML.