• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

URL fopen trotz verschiedener Charsets

TaTonka

Neuer Berner Rosenapfel
Registriert
19.03.06
Beiträge
1.975
Hallöchen...

Ich bastel mir gerade in PHP ein Script zusammen, dass aus übergebenen URLs die <title>-Informationen ausliest, und diese dann in eine Datenbank schreibt.

Nun habe ich dort allerdings ein recht nerviges Problem mit dem Charset. Meine Datenbank läuft auf latin1_german_cl. Meine Seite auf ISO-8859-15, das übergebe ich per meta-tag.
Die ausgabe der Titel erfolgt dann mit entsprechender Vorbehandlung durch htmlentities().

Nun habe ich da aber eine problematische Seite. Nämlich die Wikipedia. Die lässt ihren Schmonz nämlich auf UTF-8 laufen, was zur folge hat, dass bei mir anstelle des Bindestriches in deren title nur irgendein Sonderzeichenmüll rauskommt.

Was kann ich da tun? Meine Seite komplett auf UTF-8 umstellen, und dann mit den ISO-Formatierten seiten kämpfen? Den ganzen Kram irgendwie encodieren?

Zur Info: Mein algorithmus zum auslesen der titles sieht folgendermaßen aus:

Code:
function titlebyaddr($url)
{
	//Returns the title of a given website
	$data = implode("", file($url));
	if (preg_match("/<title>(.*?)<\/title>/is", $data, $title)) 
		{ $titelzeile = $title[1]; }
    return $titelzeile;
}

Ich spiele hierbei auch schon mit dem Gedanken, bereits im return-Statement die htmlentities() einzusetzen, aber ich bin mir da nicht so sicher, mit welchem Encoding ich da meine Seite laufen lassen muss.

Gibt es hier vielleicht jemanden, der sich mit der ganzen Charset-Geschichte etwas auskennt, und mir da weiterhelfen kann? Wäre nett :)
 

duderino

Prinzenapfel
Registriert
26.01.06
Beiträge
555
Hi, Versuch es doch mal so:

function titlebyaddr($url) {
//Returns the title of a given website
$data = implode("", file($url));
if (preg_match("/<title>(.*?)<\/title>/is", $data, $title)) { $titelzeile = $title[1]; }
return htmlentities($titelzeile, ENT_COMPAT, 'UTF-8');
}


duderino
 

TaTonka

Neuer Berner Rosenapfel
Registriert
19.03.06
Beiträge
1.975
Okay, das sieht schonmal besser aus, allerdings steht da jetzt zB "Wikipedia &ndash; Hauptseite". Ich hab jetzt mal nen bissl rumgespielt, und mal die Seite auf Iso und auch mal auf UTF laufen lassen, aber ich krieg dieses &ndash; nicht weg.

Es steht zumindest auch so in der Datenbank, und kein wilder Sonderzeichenmüll. Also bin ich schonmal einen Schritt weiter.

Jetzt ist nur die Frage, wie ich dieses &ndash; in der Ausgabe wieder zu einem - machen kann.