str_replace-Problem

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Melewo
    replied
    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>

    Leave a comment:


  • h3ll
    replied
    Originally posted by newbie1955 View Post
    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.

    Leave a comment:


  • newbie1955
    replied
    Header

    Originally posted by h3ll View Post
    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?

    Leave a comment:


  • h3ll
    replied
    Originally posted by newbie1955 View Post
    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.

    Originally posted by newbie1955 View Post
    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.

    Leave a comment:


  • newbie1955
    replied
    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?
    Last edited by newbie1955; 11-01-2013, 18:51.

    Leave a comment:


  • h3ll
    replied
    Offenbar irrst du dich. Wie prüfst du das nach? Hast du wirklich den Zeichensatz mit header() gesetzt?
    Last edited by h3ll; 11-01-2013, 18:08.

    Leave a comment:


  • newbie1955
    replied
    Originally posted by h3ll View Post
    Welchen Zeichensatz verwendet die Quellseite und welchen Zeichensatz verwendet deine Seite?
    beides utf-8

    Leave a comment:


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

    Leave a comment:


  • newbie1955
    replied
    Originally posted by h3ll View Post
    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â
    Last edited by newbie1955; 11-01-2013, 17:50.

    Leave a comment:


  • h3ll
    replied
    Originally posted by newbie1955 View Post
    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?

    Leave a comment:


  • newbie1955
    replied
    ???

    Originally posted by h3ll View Post
    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.

    Leave a comment:


  • h3ll
    replied
    Originally posted by newbie1955 View Post
    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.

    Leave a comment:


  • newbie1955
    replied
    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

    Leave a comment:


  • h3ll
    replied
    Originally posted by newbie1955 View Post
    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.

    Originally posted by newbie1955 View Post
    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.
    Last edited by h3ll; 11-01-2013, 16:25.

    Leave a comment:


  • Melewo
    replied
    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.

    Leave a comment:

Working...
X