brainsalade: encoding in PHP ändern möglich?

Beitrag lesen

Hallo,

ich habe folgendes Problem:

Ich parse einen XML-Feed in php, was auch wunderbar funktioniert.

Nun gibt es den gleichen Feed erweitert (was ich gerne hätte), dieser wird aber mit falschem encoding ausgeliefert:

Der erste Feed, der läuft enthält Umlaute und beginnt mit

<?xml version="1.0" encoding="iso-8859-1" ?>

und läuft einwandfrei.

Der Zweite, von mir gewünschte, liefert auch Umlaute, also identisch dem Ersten, nur halt mehr Ergebnisse, beginnt aber mit

<?xml version="1.0" encoding="UTF-8" ?>

und erzeugt so die falsche Ausgabe der Umlaute.

Kann ich den Feed erst in eine Variable ziehen und vor dem Parsen die encoding Definitionen korrigieren?

Ich habe folgendes versucht:

$file = file( $searchurlakt ); // $searchaktuell ist die URL des XML-Feed
 $filealt = "<?xml version="1.0" encoding="UTF-8" ?> ";
 $filereplace = "<?xml version="1.0" encoding="iso-8859-1" ?>";
 $file = str_replace ($filealt, $filereplace, $file);

danach parse ich $file:

foreach( $file as $zeile )
{
 $start_titel = strpos( $zeile, "title=" );
 if( $start_titel > 0 )
 {
  $ende_titel = strpos( $zeile, "" description" );
  $laenge = $ende_titel - $start_titel;
  $titel = substr( $zeile, $start_titel + 7, $laenge - 7 );
  $ende_beschreibung = strpos( $zeile, "" siteHost" );
  $laenge_beschreibung = $ende_beschreibung - $ende_titel;
  $beschreibung = substr( $zeile, $ende_titel + 15, $laenge_beschreibung - 15 );
  $ende_url = strpos( $zeile, "" biddedListing" );
  $laenge_url = $ende_url - $ende_beschreibung;
  $url = substr( $zeile, $ende_beschreibung + 12, $laenge_url - 12 );

Als Ergebnis ändert sich aber leider nichts - die falschen Umlaute bleiben drin.

Muss die Ersetzung woanders hin, oder ganz anders gelöst werden?

Bitte helft ...

Vielen Dank
brainsalade