str_replace-Problem

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

  • #61
    Du hast ein Attribut nicht in Anführungszeichen geschrieben. Und zum zweiten Fehler sagt die Fehlermeldung eigentlich eh schon alles. Man muss es nur lesen.

    Kommentar


    • #62
      htmlspecialchars

      muss Euch noch mal behelligen, heute habe ich mal die alte und neue echo-Ausgabe parallel ausgegeben, dennoch tauchte da wieder ein merkwürdiges unverdautes Sonderzeichen auf.

      PHP-Code:
      echo "<li><a href=$hreft target='_blank'>$title</a></li>";
      echo 
      "<li><a href=\"".htmlspecialchars($hreft)."\" target='_blank'>$title</a></li>"
      Beide bringen folgendes:
      Code:
      [LIST][*][URL="http://www.hurriyetdailynews.com/main-opposition--chps-landmark-china-trip-begins.aspx?pageID=238&nID=38940&NewsCatID=338"]Main opposition  CHP’s landmark China trip begins[/URL][*][URL="http://www.hurriyetdailynews.com/main-opposition--chps-landmark-china-trip-begins.aspx?pageID=238&nID=38940&NewsCatID=338"]Main opposition  CHP’s landmark China trip begins[/URL][/LIST]
      Muss ich da doch wieder mit str_replace ran????

      Gruß
      newbie1955

      Kommentar


      • #63
        Meiner Meinung nach gibst Du UTF-8 mit ISO aus.
        Das entspricht ja der Iso-Ausgabe von den Tests.
        Nur wie kommt das?

        Kommentar


        • #64
          Kompletter Code

          Hier mein kompletter Code:

          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> 
           
              <title>Testseite</title> 
            <!-- Mimic Internet Explorer 9 -->
          <meta name="description" content="Die ..... international" />
          <meta name="Author" content="Test" />
          <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="http://www.nachrichtentisch.de/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>
            <li>
                      <a href="presseschau.php">Intern</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->nodeValueENT_COMPAT$charset);

          /*     $title = $element->getAttribute('title');*/
                  


          If ($zaehler <= 6)
              {

                           echo 
          "<li><a href=$hreft target='_blank'>$title</a></li>";
          echo 
          "<li><a href=\"".htmlspecialchars($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>"; */
           
          echo "<li><a href=\"".htmlspecialchars($hreft)."\" target='_blank'>$title</a></li>";  
                           
          $zaehler++;
                     }
              }  


          ?>
          </ul> 

            
              </div>
            </div>


              </div></div>
              </body></html>
          Der Validator meldet für die Stelle:
          Code:
               Forbidden code point U+0099.
          Zuletzt geändert von newbie1955; 13.01.2013, 18:48.

          Kommentar


          • #65
            Bin mir nicht sicher ob das richtig ist, da mit der 1.0 eigentlich die XML Version gemeint ist, doch probieren könntest Du es ja mal. Du erstellst ja ein neues DOM-Dokument und nicht das dabei dieser Fehler entsteht.
            PHP-Code:
            $doc = new DOMDocument("1.0""utf-8"); 

            Kommentar


            • #66
              nee

              hat leider nix geändert, aber Danke für den Versuch. Weißt Du, was
              Code:
              Forbidden code point U+0099.
              bedeutet?
              Der komplette Fehlertext mit der entsprechenden Textzeile heißt

              Code:
              [IMG]http://validator.w3.org/images/info_icons/error.png[/IMG]          [I]Line [URL="http://validator.w3.org/check#line-84"]84[/URL],         Column 405[/I]:     Forbidden code point U+0099.     …='_blank'>Main opposition  CHP&acirc;€[B]™[/B]s landmark China trip begins</a></li><l…

              Kommentar


              • #67
                U+0099 <control> ist ein nicht sichtbares Steuerzeichen, wie Leerzeichen usw.. Warum das da angemeckert wird, weiß ich nicht, dachte erst wegen den anderen Zeichen, doch so einen Fehler hatte ich noch nicht.

                Ich denke Du solltest Dir den Content mal gleich nach Erhalt ausgeben lassen und den restlichen Code vorübergehend mit /* Code */ deaktivieren, damit Du mal siehst, ob da auch schon Fehler zu finden sind.

                PHP-Code:
                $String file_get_contents("http://www.hurriyetdailynews.com/");
                echo 
                htmlspecialchars($StringENT_QUOTES); 

                Kommentar


                • #68
                  Keine Fehler

                  Außer ein paar unwesentlichen Fehlern, die ich versuche, noch wegzukriegen, habe ich dann keine Fehlerangaben.

                  Code:
                  [LIST=1][*]     [IMG]http://validator.w3.org/images/info_icons/error.png[/IMG]          [I]Line [URL="http://validator.w3.org/check#line-8"]8[/URL],         Column 16[/I]:     Stray end tag html.     <html lang="de"[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-28"]28[/URL],         Column 75[/I]:     Bad value 100% for attribute width on element img: Expected a digit but saw % instead.     …id="header"><img src="br_headeraus.png" alt="header" width="100%"[B]>[/B]</div>             Syntax of non-negative integer:One or more digits (0–9). For example: 42 and 0 are valid, but -273 is not. [/LIST]

                  Kommentar


                  • #69
                    Du hast noch immer ein htmlentities() drin! Hab ich dir nicht gesagt, dass du die rauswerfen sollst?

                    Kommentar


                    • #70
                      Eigentlich hätte es mich mehr interessiert zu erfahren, ob dann alle Schriftzeichen und Sonderzeichen richtig angezeigt werden. Kannst aber auch mal mit print_r() durchs Script gehen, nur um zu sehen, ob die Zeichen schon zu Beginn fehlerhaft ausgegeben werden und falls nicht, ab wann die Zeichen nicht korrekt ausgegeben werden.

                      Kommentar


                      • #71
                        Zitat von h3ll Beitrag anzeigen
                        Du hast noch immer ein htmlentities() drin! Hab ich dir nicht gesagt, dass du die rauswerfen sollst?
                        ja, keine Ahnung, wie mir das wieder reingerutscht ist, ist jetzt draußen, ändert aber leider auch nix.

                        Kommentar


                        • #72
                          @Melewo

                          Ja, habe es noch mal verglichen. Wenn ich alles ausgebe, ist da der Satz
                          Code:
                          title="Paris ‘sabotage’ will not stop talks with Öcalan"
                          der auf meiner Seite so aussieht
                          Code:
                          [URL="http://www.hurriyetdailynews.com/paris-sabotage-will-not-stop-talks-with-ocalan.aspx?pageID=238&nID=39002&NewsCatID=338"]Paris ‘sabotage’ will not stop talks with Öcalan[/URL]

                          Kommentar


                          • #73
                            Dann zeig mal den aktuellen Code.

                            Kommentar


                            • #74
                              Benutzt Du eigentlich error_reporting(E_ALL); und kommen da Warnungen?
                              Wenn ich Dein Script nehme, so kommt da bei mir:
                              htmlParseEntityRef: no name in Entity
                              Unexpected end tag : link in Entity
                              In Zeile:
                              PHP-Code:
                              $doc->loadHTML($data); 
                              Bei stackoverflow finde ich dazu:
                              PHP-Code:
                              $data file_get_contents($url);
                                 
                                
                              $doc = new DOMDocument();
                                
                              $doc->recover true;
                                
                              $dom->strictErrorChecking false;
                                
                              $doc->loadHTML($data); 
                              Doch ob das eine saubere Lösung ist, ich habe da meine Zweifel.

                              Kommentar


                              • #75
                                aktueller code

                                Zitat von h3ll Beitrag anzeigen
                                Dann zeig mal den aktuellen Code.
                                PHP-Code:

                                <?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 $element->nodeValue

                                        


                                If (
                                $zaehler <= 6)
                                    {

                                echo 
                                "<li><a href=\"".htmlspecialchars($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 $element->nodeValue;
                                        


                                If (
                                $zaehler <= 15)
                                    {

                                                
                                /* echo "<li><a href=$hreft target='_blank'>$title</a></li>"; */
                                 
                                echo "<li><a href=\"".htmlspecialchars($hreft)."\" target='_blank'>$title</a></li>";  
                                                 
                                $zaehler++;
                                           }
                                    }  


                                ?>
                                Im head-Bereich sieht es so aus:
                                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/1999/xhtml"><!--<![endif]-->
                                <html lang="de">
                                <head> 
                                 
                                 
                                    <title>Test Ausland</title> 
                                  <!-- Mimic Internet Explorer 9 -->
                                 <!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><![endif]-->
                                <meta name="description" content="Die Nachrichten-&Uuml;bersicht international " />
                                <meta name="Author" content="test" />
                                <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
                                
                                
                                    <link href="navi1.css" type="text/css" rel="stylesheet" media="screen" /> 
                                    <link href="print3a.css" type="text/css" rel="stylesheet" media="print" />

                                Kommentar

                                Lädt...
                                X