str_replace-Problem

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

  • newbie1955
    replied
    Originally posted by h3ll View Post
    Hast du jetzt das htmlentities() schon raus gegeben?
    ja. Momentan sehe ich auch nix Störendes, aber auch keine spezifischen
    türkischen Sonderzeichen, die im aktuellen Text gerade vorkämen.

    War es denn das, was Du meintest mit "einfach nur den Zeichensatz beachten"???

    Leave a comment:


  • Melewo
    replied
    Originally posted by newbie1955 View Post
    Leider weiß ich nicht, was Ihr damit meint. Inwieweit beachten, wodurch ?
    Die Antwort hatte ich auf meine Antwort bezogen, weil ich es halt auch so handhabe, wenn ein Script UTF-8 und ISO Dateien in einem Abwasch durchsuchen soll. In der Funktion habe ich aber nur die Glyphen und Entities für Umlaute aufgenommen:

    RegEx: Mit regulären Ausdrücken im Quellcode von Dateien suchen

    Hat jetzt nicht unbedingt etwas mit dem Thema zu tun, doch zum Beispiel verstehe ich nicht, zu was dieser Refresh gut sein soll. Wenn Du da schon aus einem mir unerklärlichen Grund einen verwendest, zwischen http: und Domain kommen immer noch zwei Schrägstriche:
    HTML Code:
    <meta http-equiv="refresh" content="600; URL=http:www.nachrichtentisch.de/austest.php">
    Doch wozu, damit die Seite sich aktualisieren soll? Die hat doch so schon eine zu lange Ladezeit. Besser wäre es da, Du würdest die Ergebnisse stündlich oder mehrmals täglich cachen und für den Aufbau der Seiten dann nur die gecachten Daten verwenden.

    Daraus lässt sich 0 machen, da es sich ohnehin oft nur um Wiederholungen handelt, wie fehlende Anführungszeichen:
    Result: 460 Fehler / 37 Warnungen
    Und wenn Script und HTML aufgeräumt ist, vielleicht lassen sich dann die verbleibenden Fehler besser eingrenzen oder verschwinden mit der Aufräumaktion. Im Augenblick fallen mir keine fehlerhaften Zeichen auf.

    Leave a comment:


  • h3ll
    replied
    Hast du jetzt das htmlentities() schon raus gegeben?

    Leave a comment:


  • newbie1955
    replied
    Zeichensatz beachten

    Hallo, nett dass Ihr mir helfen wollt, aber ich habe das newbie in meinem Namen nicht ohne Grund gewählt, also versucht bitte, wenn möglich, verständlich zu bleiben.

    @AmicaNoctis und h3ll
    Man hätte auch einfach nur den Zeichensatz beachten können. Aber hey, wozu einfach, wenns auch umständlich geht...
    Leider weiß ich nicht, was Ihr damit meint. Inwieweit beachten, wodurch ??? Ich habe doch jeweils auf Deine Detailvorschläge "Browser zu utf-8 zwingen" usw. geantwortet, ohne dass ich irgendwo gelesen hätte: Mache es so! Also, ich soll nicht mit str_replace einzelne Zeichen ersetzen, habe ich kapiert. Ich habe im header - vor allen Ausgaben - per php utf-8 gesetzt, also WO oder wodurch habe ich den Zeichensatz nicht beachtet?

    @Melewo. Ja, die rechtliche Seite wird beachtet. Diese Seite soll - wenn sie je funktioniert - sowieso vor allem intern verwendet werden und wird ggf mit htaccess geschützt.
    Last edited by newbie1955; 12-01-2013, 15:23.

    Leave a comment:


  • Melewo
    replied
    Originally posted by AmicaNoctis View Post
    und verleitet dazu, alles nur noch schlimmer zu machen.
    Ist doch vollkommen richtig, bestreite ich doch nicht. Bei mir klappt es doch auch. Habe mir heute nur mal die eine Artikelseite geholt, weil ich da nicht alles scrapen wollte, ohne User Agent erhalte ich gleich einen 500er und je nach dem was ich als Zeichensatz verwende, diese Ausgaben:
    PHP Code:
    <?php ini_set("user_agent""Mozilla/5.0 ..."); ?>
    <!DOCTYPE html>
    <html>

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

    <body>
    <?php

    $String 
    file_get_contents("http://www. ... .com/door-mystery-erupts-...");
    echo 
    htmlspecialchars($StringENT_QUOTES);

    // <title> POLITICS - ‘Door’ mystery ...

    ?>
    </body>
    </html>
    PHP Code:
    <?php ini_set("user_agent""Mozilla/5.0 ..."); ?>
    <!DOCTYPE html>
    <html>

    <head>
    <title>Thema</title>
    <meta charset="windows-1252">
    </head>

    <body>
    <?php

    $String 
    file_get_contents("http://www. ... .com/door-mystery-erupts-...");
    echo 
    htmlspecialchars($StringENT_QUOTES);

    // <title> POLITICS - â€˜Door’ mystery ...

    ?>
    </body>
    </html>
    Und somit scheint da etwas beim Script mit dem verwendeten Zeichensatz nicht richtig zu stimmen oder wie auch immer. Schrieb ja nur, dass es Anwendungsfälle gibt, wo diese ganz brauchbar sind.

    @ newbie1955 - Mit der rechtlichen Seite und mit dem neuen Leistungsschutzgesetz kennst Du Dich hoffentlich aus? Dass seit Jahren keine Seite mehr in den Serps rankt, die nur zu 100% aus übernommenen Pressemitteilungen oder sonstigen Duplicate Content besteht, weißt Du? Die Fehler im Quelltext würde ich bereinigen und X-UA-Compatible würde ich entfernen, da nur als Notbehelf geeignet. Die Ladezeit von der Seite ist zu lang.[FONT=&quot][/FONT]
    Last edited by Melewo; 12-01-2013, 09:37.

    Leave a comment:


  • AmicaNoctis
    replied
    Originally posted by Melewo View Post
    Hier ist noch eine passende Glyphen-Liste, nur ist die nicht komplett. Um den Buchstaben zu erhalten, müsste nach dem zweiten Buchstaben oder Glyphe (nennt man das so?) gesucht werden.

    http://bueltge.de/wp-content/downloa...odierungen.pdf
    Das ist gut gemeint, aber diese Liste ist voll daneben und verleitet dazu, alles nur noch schlimmer zu machen. Denn auch wenn 2-Byte-Sequenzen in unseren Breiten besonders häufig anzutreffen sind, darf man nicht vergessen, dass es auch 3- und 4-Byte-Sequenzen in UTF-8 gibt. Daneben gibt es aber auch noch die nicht-kanonischen Formen (z. B. Buchstabe und kombinierendes diakritisches Zeichen), die das ganze nur noch verwirrender machen.

    Dein Satz müsste also richtig lauten: „Um die Glyphe zu erhalten, müsste nach dem zweiten (und ggf. dritten und vierten) Byte gesucht und eventuelle Kombinationsmarker berücksichtigt werden.“

    Deswegen sollte man sich an das halten, was h3ll die ganze Zeit schon predigt.

    Leave a comment:


  • h3ll
    replied
    Man hätte auch einfach nur den Zeichensatz beachten können. Aber hey, wozu einfach, wenns auch umständlich geht...

    Leave a comment:


  • Melewo
    replied
    Originally posted by h3ll View Post
    Er muss nix bereinigen. Wenn er jetzt anfängt einzelne Zeichen zu ersetzen, ist das ein schmutziger Workaround, der vielleicht in 90% der Fälle funktioniert, aber es behebt das eigentliche Problem nicht.
    Ja, ist richtig. Kommt aber immer auf den Verwendungszweck an. Hatte mal eine kleine Suche gebastelt, die UTF-8 und ISO Dateien durchsuchen sollte, da funktionierte das mit diesen Glyphen ganz gut, nur genügten da halt die Entsprechungen für Umlaute.

    Hier ist noch eine passende Glyphen-Liste, nur ist die nicht komplett. Um den Buchstaben zu erhalten, müsste nach dem zweiten Buchstaben oder Glyphe (nennt man das so?) gesucht werden.

    http://bueltge.de/wp-content/downloa...odierungen.pdf
    Last edited by Melewo; 11-01-2013, 21:42.

    Leave a comment:


  • h3ll
    replied
    Originally posted by Melewo View Post
    Die erste Zeile sollte somit die Zeichen enthalten, nach denen Du suchen müsstest, um diese beiden zu bereinigen.
    Er muss nix bereinigen. Wenn er jetzt anfängt einzelne Zeichen zu ersetzen, ist das ein schmutziger Workaround, der vielleicht in 90% der Fälle funktioniert, aber es behebt das eigentliche Problem nicht.

    Das wäre etwa so, als hättest du einen Taschenrechner, der bei 2+2 eine 5 als Ergebnis liefert. Jetzt könnte man natürlich hergehen und den Fehler "korrigieren", indem man 5 durch 4 ersetzt. "Funktioniert" auch im ersten Anschein nach einwandfrei. Bis jemand auf die Idee kommt 2+3 zu rechnen und plötzlich 4 als Ergebnis bekommt.

    Also nicht das Ergebnis der Verarbeitung korrigieren, sondern die eigentliche Verarbeitung! Das gilt auch bei Zeichensätzen.
    Last edited by h3ll; 11-01-2013, 21:27.

    Leave a comment:


  • Melewo
    replied
    Also, ich hatte ja die Testdateien im Editor vor dem Speichern zu UTF-8 konvertiert. Wenn ich die jetzt aber in meinem uralten Weberslave öffne, der das noch nicht richtig versteht, dann erhalte ich diese Reihenfolge:

    HTML Code:
    // Ausgabe: ‘Door’
    // Ausgabe: ‘Door’
    // Ausgabe: ?Door?
    Die erste Zeile sollte somit die Zeichen enthalten, nach denen Du suchen müsstest, um diese beiden zu bereinigen.

    Leave a comment:


  • h3ll
    replied
    Warum verwendest du htmlentities()? Hau das raus.

    Leave a comment:


  • newbie1955
    replied
    Originally posted by h3ll View Post
    Nochmal: Was passiert, wenn du den Browser zwingst UTF-8 zu verwenden? Wird es dann richtig dargestellt?
    Nein, habe ich doch geschrieben. Der Browser ist ohnehin so eingestellt gewesen.

    Leave a comment:


  • h3ll
    replied
    Nochmal: Was passiert, wenn du den Browser zwingst UTF-8 zu verwenden? Wird es dann richtig dargestellt?

    Leave a comment:


  • newbie1955
    replied
    @melewo

    das ist erstaunlich. Ich hatte zwar in meinen übrigen abgerufenen feeds so ein utf-8_encode drin; deswegen dachte ich erst, das wäre es, aber auch wenn ich die anderen Seitenabfragen rausnehme, kommen die Zeichen falsch, hier mein gesamter Test-code:
    HTML 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> 
     
        <title>TestseiteAusland</title> 
      <!-- Mimic Internet Explorer 9 -->
     <meta http-equiv="X-UA-Compatible" content="IE=8" />
    <meta name="description" content="Die Nachrichten-&Uuml;bersicht  international" />
    <meta name="Author" content="xyz" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    
    
    <meta name="content-language" content="de" />
    <meta name="language" content="deutsch, de" />
        <link href="navi1.css" type="text/css" rel="stylesheet" media="screen" /> 
        <link href="print3a.css" type="text/css" rel="stylesheet" media="print" />
              <link rel="shortcut icon" href="favicon.ico" /> 
     
        
    
    </head>
         
       <body>
    
        <div id="alles">
        <div id="header"><img src="br_headeraus.png" alt="header" width="100%"></div>       
        <div id="navi4">
        <ul>
            <li>
                <a href="index.php">Home</a>
            </li>
            <li>
                <a href="#">Ressorts</a>
                <ul>
                    <li><a href="index.php">Politik</a></li>
                    <li><a href="regionales.php">Region</a></li>
                    <li><a href="wirtschaft.php">Wirtschaft</a></li>
                    <li><a href="kultur.php">Kultur</a></li>
                                              <li><a href="wissen.php">Wissen</a></li>
                    <li><a href="sport.php">Sport</a></li>
                </ul>
            </li>        
                      <li>
                <a href="aus.php">Ausland</a>
            </li>
                      <li>
    
                <a href="#">Ansichten            </a>
                <ul>
                    <li><a href="aus.php">Alles</a></li>
                    <li><a href="aus_7.php">7 news</a></li>
                    <li><a href="aus_5.php">5 news</a></li>
                    <li><a href="aus_3.php">3 news</a></li>
                    <li><a href="aus_1.php">Topthema</a></li>
                </ul>
            </li>
    
            
    
                       <li>
                <a href="impressum.php">Impressum</a>
            </li>
    
        </ul>
    
    </div>
        <div id="main">
    
        <div id="col1">
    
        <div class="border">
        
     <a href="http://www.hurriyetdailynews.com/" target='_blank'> 
    <img src="logos/hudn.png" alt="Hurriyet Daily News" width="50" height="35" style=" margin:3px 0px 0px -45px ; padding:0px;"/></a>
    <ul>
    
    <?php
    $data = file_get_contents('http://www.hurriyetdailynews.com/');
    $doc = new DOMDocument();
    
     
    $doc->loadHTML($data); 
    
    $xPath = new DOMXPath($doc);
    $zaehler = 0;
    foreach ($xPath->query('//h2/a') as $element) 
    {    
       
    
         $href = $element->getAttribute('href');
         $hreft = "http://www.hurriyetdailynews.com" . $href;
         $class = $element->getAttribute('class');
    
         $title = str_replace('&acirc;','&lsquo;',$element->nodeValue); 
    
    $charset = 'utf-8';
    $title = htmlentities($element->nodeValue, ENT_COMPAT, $charset);
    
    /*     $title = $element->getAttribute('title');*/
            
    
    
    If ($zaehler <= 6)
        {
    
                     echo "<li><a href=$hreft target='_blank'>$title</a></li>";
                     $zaehler++;
               }
        }  
    
    foreach ($xPath->query('//h1/a') as $element) 
    {    
       
    
         $href = $element->getAttribute('href');
         $hreft = "http://www.hurriyetdailynews.com" . $href;
         $class = $element->getAttribute('class');
         $title = str_replace('""','"',$element->nodeValue); 
    /*     $title = $element->getAttribute('title');*/
            
    
    
    If ($zaehler <= 15)
        {
    
                     echo "<li><a href=$hreft target='_blank'>$title</a></li>";
                     $zaehler++;
               }
        }  
    
    
    ?>
    </ul> 
    
      
        </div>

    Leave a comment:


  • newbie1955
    replied
    Originally posted by h3ll View Post
    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.
    Der Browser ist schon so eingestellt, dass er utf-8 zeigen muss. Mein Validator bringt das:

    Code:
    [B]Validation Output:                           5 Errors         [/B]
    
           [LIST=1][*]     [IMG]http://validator.w3.org/images/info_icons/error.png[/IMG]          [I]Line [URL="http://validator.w3.org/check#line-7"]7[/URL],         Column 97[/I]:     Bad value [url]http://www.w3.org/2000/xhtml[/url] for the attribute xmlns (only [url=http://www.w3.org/1999/xhtml]XHTML namespace[/url] permitted here).     …l lang="de" class="no-js" xmlns="http://www.w3.org/2000/xhtml"[B]>[/B]<!--<![endif]-->                [URL="http://validator.w3.org/feedback.html?uri=;errmsg_id=html5#errormsg"]✉[/URL]     [*]     [IMG]http://validator.w3.org/images/info_icons/warning.png[/IMG]          [I]Line [URL="http://validator.w3.org/check#line-7"]7[/URL],         Column 97[/I]:     Attribute xmlns is not serializable as XML 1.0.     …l lang="de" class="no-js" xmlns="http://www.w3.org/2000/xhtml"[B]>[/B]<!--<![endif]-->                [URL="http://validator.w3.org/feedback.html?uri=;errmsg_id=html5#errormsg"]✉[/URL]     [*]     [IMG]http://validator.w3.org/images/info_icons/error.png[/IMG]          [I]Line [URL="http://validator.w3.org/check#line-12"]12[/URL],         Column 53[/I]:     Bad value X-UA-Compatible for attribute http-equiv on element meta.      <meta http-equiv="X-UA-Compatible" content="IE=8" /[B]>[/B]                [URL="http://validator.w3.org/feedback.html?uri=;errmsg_id=html5#errormsg"]✉[/URL]     [*]     [IMG]http://validator.w3.org/images/info_icons/error.png[/IMG]          [I]Line [URL="http://validator.w3.org/check#line-14"]14[/URL],         Column 87[/I]:     Bad value 600;  URL=http:[url]www.nachrichtentisch.de/austest.php[/url] for attribute content on  element meta: A component that is required by the scheme is missing.     …-equiv="refresh" content="600; URL=http:www.nachrichtentisch.de/austest.php"[B]>[/B]                  [URL="http://validator.w3.org/feedback.html?uri=;errmsg_id=html5#errormsg"]✉[/URL]     [*]     [IMG]http://validator.w3.org/images/info_icons/error.png[/IMG]          [I]Line [URL="http://validator.w3.org/check#line-17"]17[/URL],         Column 68[/I]:     Changing character encoding utf-8 and reparsing.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/[B]>[/B]                [URL="http://validator.w3.org/feedback.html?uri=;errmsg_id=html5#errormsg"]✉[/URL]     [*]     [IMG]http://validator.w3.org/images/info_icons/error.png[/IMG]          [I]Line [URL="http://validator.w3.org/check#line-17"]17[/URL],         Column 68[/I]:     Changing encoding at this point would need non-streamable behavior.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/[B]>[/B][/LIST]

    Leave a comment:

Working...
X