str_replace-Problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Melewo
    antwortet
    Wenn ich eine Testdatei nehme, dann kommen bei mir diese "a-mit-Hütchen-Zeichen" erst wenn ich encode verwende.


    Inhalt von teetrinken1.html
    HTML-Code:
    Ausgabe: ‘Door’
    Aufrufende und ausgebende Datei:

    PHP-Code:
    <!DOCTYPE html>
    <html>

    <head>
    <title>Test</title>
    <meta charset="utf-8">
    </head>

    <body>
    <p>Beide Dateien konvertiert zu UTF-8 und gespeichert.</p>

    <?php

    $String 
    file_get_contents("teetrinken1.html");  
     
    echo 
    $String."<br>\n";               // Ausgabe: ‘Door’
    echo utf8_encode($String)."<br>\n";  // Ausgabe: âDoorâ
    echo utf8_decode($String)."<br>\n";  // Ausgabe: ?Door?

    ?>
    </body>
    </html>

    Einen Kommentar schreiben:


  • h3ll
    antwortet
    Zitat von newbie1955 Beitrag anzeigen
    Muss ich dann den meta-tag rausnehmen...damit das funktioniert?
    Nein, der ist egal.

    Was ist, wenn du den Browser zwingst UTF-8 zu verwenden? Bei Firefox zB. View -> Character Encoding -> Unicode (UTF-8).

    Überprüfe mal mit dem W3C-Validator, ob deine HTML-Seite Fehler enthält.

    Einen Kommentar schreiben:


  • newbie1955
    antwortet
    Header

    Zitat von h3ll Beitrag anzeigen
    Den Meta-Tag kannst du vergessen. Auf den hören die meisten Browser nicht. Du musst den Zeichensatz beim Content-Type im HTTP-Header angeben.



    HTTP-Header müssen vorm HTTP-Body stehen, also vor _jeder_ Ausgabe. Bereits <html> ist zB. eine Ausgabe.
    Jetzt steht bei mir das:
    PHP-Code:
    <?php

    header
    ("Content-Type: text/html; charset=utf-8");
    ?>

    <!DOCTYPE html>
    <!--[if lt IE 7 ]><html lang="de" class="no-js ie6" xmlns="http://www.w3.org/2000/xhtml"><![endif]-->
    <!--[if IE 7 ]><html lang="de" class="no-js ie7" xmlns="http://www.w3.org/2000/xhtml"><![endif]-->
    <!--[if IE 8 ]><html lang="de" class="no-js ie8" xmlns="http://www.w3.org/2000/xhtml"><![endif]-->
    <!--[if IE 9 ]><html lang="de" class="no-js ie9" xmlns="http://www.w3.org/2000/xhtml"><![endif]-->
    <!--[if (gt IE 9)|!(IE)]><!--><html lang="de" class="no-js" xmlns="http://www.w3.org/2000/xhtml"><!--<![endif]-->
    <head>
    Ändert aber nix.

    Muss ich dann den meta-tag rausnehmen...damit das funktioniert?

    Einen Kommentar schreiben:


  • h3ll
    antwortet
    Zitat von newbie1955 Beitrag anzeigen
    Nein, mit header-funktionen kenne ich mich nicht aus. Ich habe als meta-tag utf-8 gesetzt, was auch für alle anderen feeds meiner Seite in Ordnung ist.

    PHP-Code:
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    Den Meta-Tag kannst du vergessen. Auf den hören die meisten Browser nicht. Du musst den Zeichensatz beim Content-Type im HTTP-Header angeben.

    Zitat von newbie1955 Beitrag anzeigen
    P.S. habe es mit

    <?php

    header("Content-Type: text/html; charset=utf-8");
    ?>

    versucht. Wo muss das stehen? Im head?
    HTTP-Header müssen vorm HTTP-Body stehen, also vor _jeder_ Ausgabe. Bereits <html> ist zB. eine Ausgabe.

    Einen Kommentar schreiben:


  • newbie1955
    antwortet
    header*

    Nein, mit header-funktionen kenne ich mich nicht aus. Ich habe als meta-tag utf-8 gesetzt, was auch für alle anderen feeds meiner Seite in Ordnung ist.

    PHP-Code:
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    P.S. habe es mit

    <?php

    header("Content-Type: text/html; charset=utf-8");
    ?>

    versucht. Wo muss das stehen? Im head?
    Zuletzt geändert von newbie1955; 11.01.2013, 18:51.

    Einen Kommentar schreiben:


  • h3ll
    antwortet
    Offenbar irrst du dich. Wie prüfst du das nach? Hast du wirklich den Zeichensatz mit header() gesetzt?
    Zuletzt geändert von h3ll; 11.01.2013, 18:08.

    Einen Kommentar schreiben:


  • newbie1955
    antwortet
    Zitat von h3ll Beitrag anzeigen
    Welchen Zeichensatz verwendet die Quellseite und welchen Zeichensatz verwendet deine Seite?
    beides utf-8

    Einen Kommentar schreiben:


  • h3ll
    antwortet
    Welchen Zeichensatz verwendet die Quellseite und welchen Zeichensatz verwendet deine Seite?

    Einen Kommentar schreiben:


  • newbie1955
    antwortet
    Zitat von h3ll Beitrag anzeigen
    Und was steht da?
    das hatte ich doch oben (16.30) geschrieben: Es steht im Quelltext der Originalseite als title
    ‘Door’, wenn ich das Ganze mit

    PHP-Code:
    $data file_get_contents('http://www.hurriyetdailynews.com/'); 
    einlese und ausgebe, steht da als title:

    âDoorâ
    Zuletzt geändert von newbie1955; 11.01.2013, 17:50.

    Einen Kommentar schreiben:


  • h3ll
    antwortet
    Zitat von newbie1955 Beitrag anzeigen
    Also, ich freue mich ja, wenn Du mir Hilfestellung geben willst, aber dann muss ich sie auch verstehen können. "Erster Schritt wäre zum Beispiel die HTML-Ausgabe zu analysieren". Ich schaue mir den Quelltext an und sehe, was da steht
    Und was steht da?

    Einen Kommentar schreiben:


  • newbie1955
    antwortet
    ???

    Zitat von h3ll Beitrag anzeigen
    Gar nicht. Du solltest herausfinden, warum es nicht korrekt dargestellt wird. Erster Schritt wäre zum Beispiel die HTML-Ausgabe zu analysieren, ob die überhaupt korrekt ist und wenn nicht, was genau nicht korrekt ist.



    Dann ist dein Browser kaputt, oder du machst die Ausgabe kaputt. HTML-Entities sind eindeutig und werden immer als das gleiche Zeichen ausgegeben.
    Also, ich freue mich ja, wenn Du mir Hilfestellung geben willst, aber dann muss ich sie auch verstehen können. "Erster Schritt wäre zum Beispiel die HTML-Ausgabe zu analysieren". Ich schaue mir den Quelltext an und sehe, was da steht - oder welche Art von HTML-Ausgaben-Analyse meinst du?

    Also, es geht mir nicht darum, dass jemand mir meine Probleme löst, indem er mir ein neues Script schreibt, sondern darum, mir zu sagen, wo der Fehler wohl liegen könnte und mit welchen Analyse-Mitteln ich ihn finden und beheben könnte.

    Einen Kommentar schreiben:


  • h3ll
    antwortet
    Zitat von newbie1955 Beitrag anzeigen
    ja, ich würde ja gern eine funktion schreiben, aber habe dabei Probleme. Beispiel. Im Quelltext der einzulesenden Seite heißt es
    ‘Door’ - bei mir wird daraus âDoorâ

    Da müsste doch eigentlich z. B. dies klappen

    $title = str_replace('&acirc;','&lsquo;',$element->nodeValue);

    tut es aber nicht. Weiß jemand wieso?
    Nein, aber du kannst es herausfinden! Machen musst du es aber selber, ich kann dir nur Hilfestellung dazu geben. Und lass den Blödsinn mit str_replace(), sondern behebe die Ursache.

    Einen Kommentar schreiben:


  • newbie1955
    antwortet
    funktionsprobleme

    ja, ich würde ja gern eine funktion schreiben, aber habe dabei Probleme. Beispiel. Im Quelltext der einzulesenden Seite heißt es
    ‘Door’ - bei mir wird daraus âDoorâ

    Da müsste doch eigentlich z. B. dies klappen

    $title = str_replace('&acirc;','&lsquo;',$element->nodeValue);

    tut es aber nicht. Weiß jemand wieso?

    Gruß
    und Dank
    newbie 1955

    Einen Kommentar schreiben:


  • h3ll
    antwortet
    Zitat von newbie1955 Beitrag anzeigen
    Ja, wie ich dieses Zeichen als HTML-Entity ausgebe, weiß ich. ich will wissen, was ich als zu suchenden bzw. ersetzenden Wert bei str_replace eingeben muss, damit das nicht korrekt dargestellte Zeichen ersetzt wird.
    Gar nicht. Du solltest herausfinden, warum es nicht korrekt dargestellt wird. Erster Schritt wäre zum Beispiel die HTML-Ausgabe zu analysieren, ob die überhaupt korrekt ist und wenn nicht, was genau nicht korrekt ist.

    Zitat von newbie1955 Beitrag anzeigen
    Ausgegeben wird dieses ğ in meinen Browsern als Ä.
    Dann ist dein Browser kaputt, oder du machst die Ausgabe kaputt. HTML-Entities sind eindeutig und werden immer als das gleiche Zeichen ausgegeben.
    Zuletzt geändert von h3ll; 11.01.2013, 16:25.

    Einen Kommentar schreiben:


  • Melewo
    antwortet
    Viele, wenn nicht die meisten Probleme entstehen allein dadurch, dass HTML-Dokumente nur mit einer Zeichenkodierung ausgezeichnet aber nicht unter dieser Zeichenkodierung gespeichert werden. Also, nur weil Du charset=UTF-8 schreibst, ist das Dokument noch lange kein UTF-8, insofern ein Editor unter Iso oder Ansi speichert.

    Im FF sehe ich jetzt kein Türkisch oder bin etwas blind, doch im IE kann ich unter Ansicht -> Codierung -> mehr -> Türkisch wählen. Dann siehst Du schon einmal, ob sich etwas zum Leserlichen wandelt. Falls ja, wurde das Dokument vom Editor vermutlich nicht mit UTF-8 gespeichert oder wie auch immer. Falls nein, auch doppelte Codierungen bereiten zuweilen Probleme, was dann zur Ausgabe von Fragezeichen oder so führen kann.

    Mit dem Türkischen kenne ich mich nicht aus, doch für Umlaute gibt es neben den UTF-8 Entsprechungen und HTML-Entities auch noch Hieroglyphen (weiß jetzt nicht, wie die richtig bezeichnet werden), für alles gibt es Listen, in denen diese Entsprechungen zu finden sind.

    Ein Beispiel: Diakritische Zeichen - Trkisch Unicode

    Wobei zu beachten ist, dass zum Beispiel 00C7 auch als 00c7 Verwendung finden könnte und somit nach beiden Schreibweisen gesucht werden sollte. Was ich in dieser Liste noch vermisse, das sind halt diese Hieroglyphen wie Ä und ä für ein großes und kleines deutsches Ä und ä.

    Am einfachsten kommst Du dann weg, wenn Du eine Funktion erstellst, die alle Entsprechungen enthält und umwandelt.

    Einen Kommentar schreiben:

Lädt...
X