$dom = new DOMDocument();
@$dom->loadHTML( $file_contents ); //$file_contents - код хтмл в формате string
$divs = $dom->getElementsByTagName('div');
$node = $divs->item(0);
echo $node->nodeValue;
если в первом диве будет код с джаваскриптами, картинками и ссылками, то скрипт это все не покажет, а выдаст только текст который внутри дива.
Как извлечь из него все в виде html ?
Спустя 5 часов, 41 минута, 58 секунд (8.01.2011 - 01:37) ApuktaChehov написал(а):
На счет джаваскриптов не знаю, но картинки и ссылки, тоже являются элементами дерева DOM. По этому к ним нужно обращаться подобающим способом.
Честно говоря, я не очень понял суть вопроса.
Честно говоря, я не очень понял суть вопроса.
Спустя 10 часов, 35 минут, 19 секунд (8.01.2011 - 12:13) phpdreamer написал(а):
поняли правильно)
и можно к ним обратиться "подобающим способом", но если перебрать и вывести все дочерние элементы (даже рекурсивно), тогда все равно не получиться это все слепить вместе с текстом который внутри этого верхнего div
и можно к ним обратиться "подобающим способом", но если перебрать и вывести все дочерние элементы (даже рекурсивно), тогда все равно не получиться это все слепить вместе с текстом который внутри этого верхнего div
Спустя 2 часа, 32 минуты, 57 секунд (8.01.2011 - 14:45) ApuktaChehov написал(а):
В нем есть и текст и картинки и ссылки?
Если так, то текст, это тоже элемент, как и ссылки и картинки.
Я так понял, нужно из этого дива получить кусок html кода, как он "есть"?
А что значит слепить? Что вы хотите сделать то?
Если так, то текст, это тоже элемент, как и ссылки и картинки.
Я так понял, нужно из этого дива получить кусок html кода, как он "есть"?
А что значит слепить? Что вы хотите сделать то?
Спустя 1 час, 1 минута, 12 секунд (8.01.2011 - 15:47) phpdreamer написал(а):
Цитата |
Я так понял, нужно из этого дива получить кусок html кода, как он "есть"? |
да, так и есть
Цитата |
то текст, это тоже элемент, как и ссылки и картинки. |
ссылка это тег a, картинка это img , а каким тогда элементом будет текст?
Спустя 1 час, 12 минут, 34 секунды (8.01.2011 - 16:59) ApuktaChehov написал(а):
Если какой-либо элемент содержит текст, то обратиться к этому тексту можно так:
obj.childNodes[0].nodeValue
В этом случае, перед текстом нет никаких элементов, т.е. он первый ребенок.
obj.childNodes[0].nodeValue
В этом случае, перед текстом нет никаких элементов, т.е. он первый ребенок.
Спустя 31 минута, 43 секунды (8.01.2011 - 17:31) phpdreamer написал(а):
допустим изначально был такой див
Мы его нашли через dom и занесли как объект в переменную $node
обратившись так
<div>
текст1 <img src="url" alt="текст2"> текст3 <p>текст4</p> текст5 <a href="url2" title="текст6">текст7</a>
</div>
Мы его нашли через dom и занесли как объект в переменную $node
обратившись так
Цитата |
obj.childNodes[0].nodeValue |
что мы получим?
"текст1" ?
а как же все остальное? например текст5
Спустя 1 час, 42 минуты, 51 секунда (8.01.2011 - 19:14) ApuktaChehov написал(а):
объект 1 - текст1
объект 2 - <img src="url" alt="текст2">
объект 3 - текст3
объект 4 - <p>текст4</p>
объект 5 - текст5
объект 6 - <a href="url2" title="текст6">текст7</a>
А теперь нужно обратиться к этим объектам.
объект 2 - <img src="url" alt="текст2">
объект 3 - текст3
объект 4 - <p>текст4</p>
объект 5 - текст5
объект 6 - <a href="url2" title="текст6">текст7</a>
А теперь нужно обратиться к этим объектам.
Спустя 3 часа, 9 минут, 26 секунд (8.01.2011 - 22:23) phpdreamer написал(а):
нашел на php.net такой код:
он как раз решает эту задачу
<?php
// code taken from the Raxan PDI framework
// returns the html content of an element
protected function nodeContent($n, $outer=false) {
$d = new DOMDocument('1.0');
$b = $d->importNode($n->cloneNode(true),true);
$d->appendChild($b); $h = $d->saveHTML();
// remove outter tags
if (!$outer) $h = substr($h,strpos($h,'>')+1,-(strlen($n->nodeName)+4));
return $h;
}
?>
он как раз решает эту задачу
_____________
http://phpdreamer.ru
http://blog.phpdreamer.ru
http://php5shop.com