Dokumentacija za funkciju
xml_set_character_data_handler kaze sledece:
Citat:
Character data handler is called for every piece of a text in the XML document. It can be called multiple times inside each fragment (e.g. for non-ASCII strings).
|
Dakle, treba da pogledas kako primeri rade; svi teraju concatenate. Dakle, da bi sastavio tag, potrebno je ili da
1) ispisujes sve ovo malko drugacije ako hoces sve odjednom da radis; ili da
2) trpas sve u varijablu/objekat dok ne dodje red na print pa da pljunes sve u nekoj petlji.
Pretpostavljam da ti je ovo samo test primer, pa da nece izgledati tako, ali evo kako bismo oba primera naterali da radi:
1) ovo je samo deo koda koji treba promeniti. Dakle, pocetak vrednosti ispisujes u startu taga, kraj u endu taga, a kontent samo printas u nizu:
PHP kôd:
function start_tag($parser, $name) {
echo "<b>$name</b><br><i>";
}
function end_tag($parser, $name) {
echo "</i><br><b>$name</b><br>";
}
function tag_contents($parser, $data) {
echo $data;
}
2) opet samo deo koda. Dakle, inicijalizujes var u startu, cuvas je u endu, a content samo
concatenate:
PHP kôd:
$final = array();
function start_tag($parser, $name) {
$GLOBALS['_tagvalue'] = '';
}
function end_tag($parser, $name) {
$GLOBALS['final'][$name][] = $GLOBALS['_tagvalue']; // sacuvaj vrednost
$GLOBALS['_tagvalue'] = null;
}
function tag_contents($parser, $data) {
$GLOBALS['_tagvalue'] .= $data;
}
...a kako postoje nested tagovi i razne druge perverzije, mozda je bolje potraziti neku klasu koja radi posao, a ti samo da radis posle foreach lepo ili sta vec pa da pljujes podatke iz objekta... da glava ne boli...