Kako v PHP-ju iz SimpleXMLElement-a dobiti string? Zelo zanimiva zadeva.
1 2 3 4 5 6 | $data = "<?xml version=\"1.0\" encoding=\"utf-8\">"; $data .= "<xml><node>tekst</node></xml>"; $xml = new SimpleXMLElement($data); $string = $xml->node; var_dump($string); |
No, zgornja koda bi po pričakovanju morala izpisati:
1 | tekst |
Vrne pa:
1 2 3 4 | object(SimpleXMLElement)#2 (1) { [0]=> string(5) "tekst" } |
Kaj pa če napiš¡emo:
1 | echo $xml->node; |
Takrat izpiše:
1 | tekst |
Torej problem je, da v nam spremenljivko shrani SimpleXMLElement objekt, izpiše pa string. To zna biti nerodno sploh pri ajax zadevah - npr: v array shranimo neke stringe in jih spustimo preko funkcije json_encode in preko js-ja pošljemo na clienta. Namesto stringov, pa so notri objekti. Ni vredu. Sodelavc je poštudiru, da se da zadeva rešit na zelo simpl način in sicer:
1 | $string = "".$xml->node; |
Sedaj pa tudi var_dump izpiše prav:
1 | string(5) "tekst" |
Se pravi, da dodamo prazen string in zadeva je rešena.
Očitno php nekaj interno zmučka s tem objektom, kaj pa sam bog ve. No, važno, da dela. Upam, da bo ta "trik" komu prišel še prav, meni prav gotovo je.