Mailinglisten-Archive |
Hallo, habe folgende schwierigkeiten mit den PHP Expat Parserfunktionen. Zum einen scheint die Parseroption *XML_OPTION_SKIP_WHITE* unter Verwendung von ElementHandler Callbackfunktionen keine Auswirkung zu haben. Dies scheint nur für *xml_parse_into_struct()* zu gelten. Um CData Daten bestehend aus White Spaces zu vermeiden, Prüfe ich mit folgendem Ausdruck: if(!preg_match('/^[\t \n\r]+$/',$data)) { $var .= $data } Gibt es eine bessere Möglichkeit als einen Regulären Ausdruck hierfür? Ein weiteres Problem ist, dass sich die Funktion *xml_set_character_data_handler()* sich nicht ganz so verhält wie ich es mir erwartet hatte bzw. ich nicht ganz verstehe wieso die Funktion sich so verhält. So trifft der Parser z.B. auf Umlaute, so wird der Vorgang abgebrochen und anschließend erneut aufgerufen. Beispiel: <title>Ein Text über etwas</title> Hier wird der zuerst der Text bis zum *ü* geparsed und danach der Rest. function cData($parser, $data) { echo "|".$data."|\n"; } Somit erzeugt der dieser Callback Handler folgende Ausgabe |Ein Text | |über etwas| Dies macht es z.B. nicht möglich ein trim bereits in der Callback Funktion zu verwenden, da sonst das Leerzeichen zwischen "Test" und "über" fehlen würde. Sind beide verhalten Bugs oder Absichtlich implementiert. Bei letzerem wurde mich auch der Zweck interessieren. vielen Dank und Grüße Martin Adler
php::bar PHP Wiki - Listenarchive