Zeichensatzveränderung bei file_get_contents

ReemE

Mitglied
Hallo an alle,

Ich habe zum Spass ein Script gebaut, welches die Schon-Gewusste-Sparte bei Wikipedia ausliest und in einen Array speichert.

PHP:
  // returns array of Wikipedia's "Schon gewusst?"
  function schon_gewusst(){
  	$sg = file_get_contents("http://de.wikipedia.org/wiki/Hauptseite");
	$sg = stristr($sg, "Schon gewusst,");
	$sg = str_replace("…","",$sg);
	$sg = explode("<small><b>Weitere",$sg);
	$sg = str_replace("=\"/wiki/","=\"http://de.wikipedia.org/wiki/",$sg);
	preg_match_all("-<li>(.*)</li>-",$sg[0],$sg);
	$sg = str_replace("<li> ","",$sg[0]);
	$sg = str_replace("</li>","",$sg);
	return $sg;
  }

Wenn ich diese Funktion ausführe und ausgeben lasse, bekomme ich Folgendes zu sehen:
Array
(
[0] => der Antrieb des Jet Packs auf einer katalytischen Reaktion beruht?
[1] => der russische Landschaftsmaler Abram Jefimowitsch Archipow Mitglied der Peredwischniki („Wanderer“) war?
[2] => die National Gallery of Art in Washington (D.C.) zwar eine öffentliche Einrichtung ist, sich jedoch in Privatbesitz befindet?
)

Das Original lautete aber:
* … der Antrieb des Jet Packs auf einer katalytischen Reaktion beruht?
* … der russische Landschaftsmaler Abram Jefimowitsch Archipow Mitglied der Peredwischniki („Wanderer“) war?
* … die National Gallery of Art in Washington (D.C.) zwar eine öffentliche Einrichtung ist, sich jedoch in Privatbesitz befindet?

Woher kommt diese Fehldarstellung?
Wird der String bei file_get_contents etwa einer Zeichensatzänderung unterworfen?

Wie könnte ich das Problem beheben?

greez
ReemE
 
So viel ich weiß, verwendet Wikipedia vorbildlich die Zeichenkodierung UTF-8. Du verwendest hingegen wahrscheinlich eine der ISO-8859-Familie, wodurch es zu dieser „Fehlinterpretation“ durch den Browser kommt.
Du hast nun zwei Möglichkeiten: Entweder du benutzt auch UTF-8 (was ich persönlich dir empfehle) oder kodierst die Daten entsprechend (vgl. utf8_decode()-Funktion).
Falls du das Ganze automatisieren möchtest, um nicht immer selbst prüfen zu müssen, um welche Kodierung es sich handelt, haben sich unter anderem Lachlan Hunt und Anne van Kesteren Gedanken darüber gemacht und ein paar nützliche Funktionen geschrieben.

PS: Beide besitzen übrigens ein durchaus lesenswertes Weblog: Lachy’s Log und Anne’s Weblog about Markup & Style.
 
Zurück