• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> 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.