$result = curl_exec($ch);
src
из содержимого html.$dom = new DOMDocument();
$dom->loadHTML($result);
$iFrame = $dom->getElementsByTagName('iframe')->item(0);
$src = $iFrame->getAttribute('src');
echo $src;
Warning: DOMDocument::loadHTML(): Tag footer invalid in Entity, line: 275 in
Warning: DOMDocument::loadHTML(): Tag section invalid in Entity, line: 277
и
Fatal error: Call to a member function getAttribute() on null in
$doc = new DOMDocument();
$doc->loadHTML($result);
var_dump($doc);
textContent
я не вижу html тегов, только script как я понимаю... $dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXpath($dom);
foreach($xpath->query('//iframe') as $iframe) {
echo $iframe->getAttribute('src');
}
$dom->loadHTML($html);
Несмотря на то, что некорректный HTML обычно успешно загружается, данная функция может генерировать ошибки уровня E_WARNING при обнаружении плохой разметки. Для обработки данных ошибок можно воспользоваться функциями обработки ошибок libxml.
if (!$doc->load('file.xml')) {
foreach (libxml_get_errors() as $error) {
// обработка ошибок здесь
}
libxml_clear_errors();
}
$dom = new DOMDocument();
$dom->loadHTML($result, LIBXML_NOWARNING | LIBXML_NOERROR);
var_dump($dom);
<div>
какой то текст
</div>
<script>Код JS</script>
<div>
какой то текст
</div>
<div>
какой то текст
</div>
<div>
какой то текст
</div>
<script>Код JS</script>
Т.е он удаляет все средние div.
Видимо, мне нужен правильный preg_replace который удалит только внутренности script и циклом очистит все scripts.
preg_replace("/<script\b[^>]*>(.*?)<\/script>/isu", "", $html);
loadHTML просто нив какую не грузит html теги, даже в самом начале которые.
<?php
ob_start();
?>
<html>
<head>
</head>
<body>
<div>sdfadsfdsfdsfadsf</div>
<div>464s6da4f6d5s4f5d6s4fa64</div>
<script type="text/javascript">
var p = 0;
var t = 0;
</script>
<span>opopopopopopoop</span>
<script type="text/javascript">
var u = 0;
var m = 0;
</script>
</body>
</html>
<?php
$html = ob_get_clean();
$h = preg_replace("/<script\b[^>]*>(.*?)<\/script>/isu", "", $html);
$dom = new DOMDocument();
$dom->loadHTML($h);
$xPath = new DOMXPath($dom);
$elements = $xPath->query("//*");
if (!is_null($elements)) {
foreach ($elements as $element) {
echo "<br/>[" . $element->nodeName . "]";
$nodes = $element->childNodes;
foreach ($nodes as $node) {
echo $node->nodeValue . "\n";
}
}
}
print_r($elements);
<br/>[html]
sdfadsfdsfdsfadsf
464s6da4f6d5s4f5d6s4fa64
opopopopopopoop
<br/>[head]<br/>[body]
sdfadsfdsfdsfadsf
464s6da4f6d5s4f5d6s4fa64
opopopopopopoop
<br/>[div]sdfadsfdsfdsfadsf
<br/>[div]464s6da4f6d5s4f5d6s4fa64
<br/>[span]opopopopopopoop
DOMNodeList Object
(
[length] => 6
)
<html>
<head>
</head>
<body>
<div>sdfadsfdsfdsfadsf</div>
<div>464s6da4f6d5s4f5d6s4fa64</div>
<span>opopopopopopoop</span>
</body>
</html>
$html = preg_replace("'<script[^>]*?>.*?</script>'si","", $result);
$dom = new DOMDocument();
$dom->loadHTML($html);
var_dump($dom);
object(DOMDocument)#3 (34) {
["doctype"]=>
string(22) "(object value omitted)"
["implementation"]=>
string(22) "(object value omitted)"
["documentElement"]=>
string(22) "(object value omitted)"
["actualEncoding"]=>
string(5) "utf-8"
["encoding"]=>
string(5) "utf-8"
["xmlEncoding"]=>
string(5) "utf-8"
["standalone"]=>
bool(true)
["xmlStandalone"]=>
bool(true)
["version"]=>
NULL
["xmlVersion"]=>
NULL
["strictErrorChecking"]=>
bool(true)
["documentURI"]=>
NULL
["config"]=>
NULL
["formatOutput"]=>
bool(false)
["validateOnParse"]=>
bool(false)
["resolveExternals"]=>
bool(false)
["preserveWhiteSpace"]=>
bool(true)
["recover"]=>
bool(false)
["substituteEntities"]=>
bool(false)
["nodeName"]=>
string(9) "#document"
["nodeValue"]=>
NULL
["nodeType"]=>
int(13)
["parentNode"]=>
NULL
["childNodes"]=>
string(22) "(object value omitted)"
["firstChild"]=>
string(22) "(object value omitted)"
["lastChild"]=>
string(22) "(object value omitted)"
["previousSibling"]=>
NULL
["attributes"]=>
NULL
["ownerDocument"]=>
NULL
["namespaceURI"]=>
NULL
["prefix"]=>
string(0) ""
["localName"]=>
NULL
["baseURI"]=>
NULL
["textContent"]=>
string(984) "Sign In
@media only screen and (min-device-width: 481px) {
.wrapper {
margin-bottom: -66px;
padding-bottom: 66px;
}
}
@media only screen and (max-device-width: 480px) {
.wrapper {
margin-bottom: -122px;
padding-bottom: 122px;
}
}
Privacy Policy
Terms of Use
"
}