str_replace-Problem

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

  • #16
    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('â','‘',$element->nodeValue);

    tut es aber nicht. Weiß jemand wieso?

    Gruß
    und Dank
    newbie 1955

    Kommentar


    • #17
      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('â','‘',$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.

      Kommentar


      • #18
        ???

        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.

        Kommentar


        • #19
          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?

          Kommentar


          • #20
            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.

            Kommentar


            • #21
              Welchen Zeichensatz verwendet die Quellseite und welchen Zeichensatz verwendet deine Seite?

              Kommentar


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

                Kommentar


                • #23
                  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.

                  Kommentar


                  • #24
                    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.

                    Kommentar


                    • #25
                      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.

                      Kommentar


                      • #26
                        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?

                        Kommentar


                        • #27
                          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.

                          Kommentar


                          • #28
                            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>

                            Kommentar


                            • #29
                              Zitat von h3ll Beitrag anzeigen
                              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]

                              Kommentar


                              • #30
                                @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>

                                Kommentar

                                Lädt...
                                X