Парсинг HTML через Tidy, не подскажите ли где ошибка в рекурсии?

WebPHPDev

Новичок
Парсинг HTML через Tidy, не подскажите ли где ошибка в рекурсии?

Написал небольшую рекурсионную функцию - она почти работает. Во всяком случае выводит значения все и в верном порядке. (по порядку вложенности)
Но вот с проставлением и учётом вложенности проблема - она выводится не правильно.

Не подскажите ли куда поставить команду "$level++" в функции ReadNote?
Сейчас я поставил так, но выписывает неверный уровень.. а как мне кажется должно работать верно :)

Вот код:

PHP:
<?php

header( 'Content-Type: text/plain' );

$html = '
<html>
	<head>
		<title>test</title>
	</head>
	<body>
			<p>paragraph</p>
			<b>bold text</b>
			<div>
				hello
				<div>inside div tag</div>
			</div>
	</body>
</html>';

$tidy = tidy_parse_string($html);
$html = tidy_get_html($tidy);

function ReadNode( &$currNode, $level ){
	GLOBAL $level;

	echo 'level ' . $level . ': ' . $currNode->value . "\n\n------------------------------\n\n";
	for ( $i=0; $i<count( $currNode->child ); $i++ ) {

		if ( isset( $currNode->child[$i] ) ) {
			$level++;
			ReadNode( $currNode->child[$i], $level );
		}

	}

}

$level = 0;
ReadNode( &$html, $level );

?>
 

AmdY

Пью пиво
Команда форума
ReadNode( &$html, $level ) - зачем здесь амперсанд
------------------
function ReadNode( &$currNode, $level ){
GLOBAL $level;
ты определись передаёшь $level в функцию или используешь глобальную переменную.
 

WebPHPDev

Новичок
тьфу ты!!
Спасибо большое за подсказку. Действительно, переклинило что-то меня.
Убрал GLOBAL (оно же у меня параметром). А то-то я и смотрю что оно аж через два шага прыгает..

И верный код там такой:
PHP:
$level++; 
ReadNode( $currNode->child[$i], $level );
$level--;
Всё отлично работает.

Спасибо, AmdY!
 

Nogrogomed

Новичок
А зачем инкрементировать, чтобы потом декрементировать? По другому никак нельзя? Например передавать $level+1...
 
Сверху