| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

15-11-2010, 14:27
|
|
beginner123
Registrierter Benutzer
|
|
Registriert seit: Nov 2010
Beiträge: 42
|
|
Sonderzeichen / UTF-8-Problematik bei Import von Wikipedia
Hallo,
ich lasse mir aus einigen Einträgen automatisiert einen Index erstellen, und lese - wo vorhanden - dafür einige Teile von Wikipedia ein.
Das einlesen sieht so aus:
Code:
$URL = "http://de.wikipedia.org/wiki/" . $urlend;
$URL = utf8_encode($URL);
$seiteninhalt = file_get_contents($URL);
Sowohl die PHP-Datei, die das macht, als auch die erzeugte HTML-Datei enthalten den Eintrag charset=UTF-8.
Trotzdem erhalte ich sehr unschöne Effekte mit allen Sonderzeichen, ein Beispiel:
Zitat:
|
Die <b>Demografie</b> (auch <b>Demographie</b>, griech. <b>δημογÏαφία</b>, von <i>δήμος, démos â€" Volk</i> und <i>γÏαφή, grafé â€" Schrift, Beschreibung</i>) bzw. <b>Bevölkerungswissenschaft</b>
|
Was mache ich da noch falsch? Danke!
|

15-11-2010, 14:33
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Hallo,
dann codierst du es vermutlich doppelt als UTF-8.
Genaueres kann man nicht sagen. Bei deinen Angaben, wo du überall UTF-8 angibst, hättest du etwas mehr ins Detail gehen oder ein Onlinebeispiel liefern können.
Gruß,
Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

15-11-2010, 14:41
|
|
beginner123
Registrierter Benutzer
|
|
Registriert seit: Nov 2010
Beiträge: 42
|
|
Hmm, ich versuche mal, mehr Details zu geben:
Code:
$URL = "http://de.wikipedia.org/wiki/" . $urlend;
$URL = utf8_encode($URL);
$seiteninhalt = file_get_contents($URL);
// Anfang weg bis hier
$pos = strpos($seiteninhalt, '<h1 id="firstHeading" class="firstHeading">');
if ($pos > 0) {
$seiteninhalt = substr($seiteninhalt, $pos);
}
Dann kommt noch div. anderes. Es bleibt ein String übrig, mit möglichst wenigen HTML-Kommandos. Und den füge ich dann an passender Stelle ein und schreibe die neue HTML-Datei:
Code:
if (strlen($URLcontent) > 0) {
$pos1 = strpos($all, "-- INHALTSBESCHREIBUNG --");
$pos2 = strpos($all, "-- INHALTSBESCHREIBUNG_ENDE --");
if ($pos1 !== false and $pos2 !== false) {
$all = substr($all, 0, $pos1 - 2) . $URLcontent . substr($all, $pos2 + 31);
}
$filename = $keyword . ".html";
$handle = fopen ($themeindexpath . $filename, "w");
if (! fwrite($handle, $all) ) {
die(utf8_encode("Fehler: Neue Begriffsdatei $filename konnte nicht geschrieben werden!"));
}
fclose ($handle);
Hilft das?
|

15-11-2010, 14:46
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Naja, fast schon ein bisschen. Ich sehe jetzt, dass du den HTML-Code abspeicherst und nciht direkt ausgibst, aber mehr eigentlich nicht.
Kannst du mal so eine gespeicherte HTML-Datei als Anhang hochladen?
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

15-11-2010, 14:50
|
|
beginner123
Registrierter Benutzer
|
|
Registriert seit: Nov 2010
Beiträge: 42
|
|
Gerne:
|

15-11-2010, 14:55
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Zitat:
Zitat von beginner123
Gerne:
|
Aha
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

15-11-2010, 14:57
|
|
beginner123
Registrierter Benutzer
|
|
Registriert seit: Nov 2010
Beiträge: 42
|
|
Sorry, ich hatte nicht gesehen, dass man html-files nicht anhängen kann. Jetzt sollt´s als zip dabei sein.
|

15-11-2010, 15:08
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Alles klar, du baust da irgendwas zusammen aber kein HTML.
Erste Zeile:
Code:
<html header('Content-Type: text/html; charset=utf-8')><head>
Das kann so nicht gehen. header ist eine PHP-Funktion, kein HTML-Attribut.
Die Lösung: HTML korrigieren und das im head einfügen:
HTML-Code:
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

15-11-2010, 15:14
|
|
beginner123
Registrierter Benutzer
|
|
Registriert seit: Nov 2010
Beiträge: 42
|
|
Super, danke, nach vielen Stunden Programmieren macht man manchmal die dümmsten Fehler...
|

15-11-2010, 15:31
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Jag aber trotzdem mal den HTML-Code durch den W3C Validator. Da ist noch mehr im Argen.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

15-11-2010, 15:33
|
|
beginner123
Registrierter Benutzer
|
|
Registriert seit: Nov 2010
Beiträge: 42
|
|
Mache ich sowieso noch. Aber vorher noch: Kannst du mir erklären, warum z.B. der lange Gedankenstrich nach wie vor nicht passt? Gleich oben bei den griechischen Zeichen, siehe Themenindex fr Schlsselwort Demographie von www.dvd-wissen.com
|

15-11-2010, 15:40
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Erklären nicht, aber vermuten: du arbeitest mit den normalen Stringfunktionen und machst/suchst/ersetzt damit irgendwas, ich nehme an genau in dem weggelassenen Teil von dem geposteten Script. Dabei zerstörst du dir deine UTF-8-Sequenzen.
Sieh dir mal die MBString-Erweiterung von PHP an.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

15-11-2010, 15:43
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|