|
|
|
| Здравствуйте! Ниже приведен код парсера. Моя задача- распихать картинки по контейнерам <div> и каждому контейнеру присвоить уникальный id, в данном случае DragBox1 DragBox2 DragBox3......
Я сделал функцию, которая при каждом вызове, возвращает на 1 больше. function give_contener_name. Если запихнуть её в обычный цикл, то все работает, но тут не хочет.
Подскажите пожалуйста, как правельно реализовать такую нумерацию?
Заранее спасибо!
<?
$count_cont=1;
$count_items=0;
function give_contener_name(&$count_cont) {
return $count_cont++;
}
function give_img_name(&$count_img) {
return $count_img++;
}
function start_element($parser, $element_name, $element_attrs) {
switch ($element_name) {
case 'ITEM':
echo '<div class="DragBox" id="Item';
echo give_contener_name($count_cont);
echo '">';
break;
case 'IMG':
echo '<div style="float:left;">';
echo '<img src="'.$element_attrs['LINK'].'" class="pics">';
break;
}
}
function end_element($parser, $element_name) {
switch ($element_name) {
case 'ITEM':
echo '</div>';
break;
case 'IMG':
echo '</div>';
break;
}
}
function character_data($parser, $data) {
//echo htmlentities($data);
echo $data;
}
$parser = xml_parser_create();
xml_set_element_handler($parser, 'start_element', 'end_element');
xml_set_character_data_handler($parser, 'character_data');
$fp = fopen('chbooks.xml', 'r')
or die ("Cannot open keyword-data.xml!");
while ($data = fread($fp, 4096)) {
xml_parse($parser, $data, feof($fp)) or
die(sprintf('XML ERROR: %s at line %d',
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)));
}
xml_parser_free($parser);
?>
|
| |
|
|
|
|
|
|
|
для: UnlikeAO
(23.06.2010 в 14:07)
| |
function start_element($parser, $element_name, $element_attrs) {
switch ($element_name) {
case 'ITEM':
echo '<div class="DragBox" id="Item';
echo give_contener_name($count_cont);
|
Указанное обращение выполняется к локальной (внутри функции start_element) переменной. Нестатической при том. | |
|
|
|
|
|
|
|
для: Trianon
(23.06.2010 в 14:27)
| | Хорошо, я делаю переменную global допустим, global $count_cont;
все равно не работает! Вы можете подсказать мне решение? | |
|
|
|
|
|
|
|
для: UnlikeAO
(23.06.2010 в 14:33)
| | Вы внутри этой функции пишете global? И не работает? С трудом верится. | |
|
|
|
|
|
|
|
для: Trianon
(23.06.2010 в 14:42)
| | аааа, надо внутри функции писать глобал!! А я снаружи пишу. Ну вот видите, можете же объяснять когда хотите)) Шутка. Спасибо большое! Написал global внутри, все работает. Правда не знал, никогда глоб. переменные не объявлял раньше. | |
|
|
|
|
|
|
|
для: UnlikeAO
(23.06.2010 в 14:50)
| | Если прочли в моем предложении каждое слово, а не только слово "локальный", то тоже смогли бы сразу | |
|
|
|