phpbar.de logo

Mailinglisten-Archive

[php] expat

[php] expat

Martin Adler martin.adler at continum.net
Fre Mar 24 14:05:38 CET 2006


Hallo Peter,

Peter Bieling schrieb:
> Hallo Martin,
> 
> Martin Adler wrote:
>>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?
> 
> 
> z.B. $var .= trim($data);

da die cData in Stücken geliefert werden geht das eben nicht an genau 
dieser stelle. Denkbar wäre dies wohl bei der Ausgabe oder auch möglich 
in der endElement Callback Funktion.

>>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.
> 
> Meinst Du, dass die Umlaute rausfallen?
> Wie sieht denn Deine XML-Deklaration aus?
> Verwendest Du PHP4 oder 5?

Umlaute fallen nicht weg sondern der Parsvorgang wird durch das erneute 
aufrufen der cData Callback Funktion fortgesetzt.
Zum Einsatz kommt in diesem Fall PHP 5.1.1

> Vielleicht sagst Du uns noch, was Du mit den Expat-Funktionen vorhast? 
> Für XML gibt es nämlich abhängig vom Zweck noch diverse andere 
> Möglichkeiten, besonders natürlich mit PHP5.

Es geht lediglich darum XML Daten zu lesen und in eine Array-Struktur zu 
bringen. Das ganze Funktioniert auch schon nur sind gewisse dinge eben 
nicht ganz nachvollziebar, da in der PHP Dokumentation hierzu keine 
weitere Stellung genommen oder ganz ausgelassen wird.
Um den Parser zu schreiben habe ich exemplarisch das Heise Online RDF 
verwendet.

grüße
Martin Adler

php::bar PHP Wiki   -   Listenarchive