problem mit htmlspecialchars & nl2br

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

  • problem mit htmlspecialchars & nl2br

    tach,

    habe da ein prob mit den beiden im betreff genannten funktionen. folgendes:

    ich hole text aus einer mysql db. der text steht unformatiert in der db, also keine html tags usw.

    beim auslesen mache ich folgendes:

    $text = htmlspecialchars($row['text']);

    und danach gleich:

    $text = nl2br($text);

    jetzt müssten ja eigentlich die von htmlspecialchars erkannten entitäten umgewandelt werden (funzt auch) und dann alle newlines in <br /> umgewandelt werden. das klappt nicht

    alle newlines werden wie folgt umgewandelt:

    &lt;br /&gt;

    das raff ich nicht. selbst wenn ich htmlspecialchars weglasse sieht's so aus.
    das kann doch nicht sein oder??

    als charset nehm ich iso-8859-1.

    irgednwie blick ich das nicht ganz

  • #2
    ich denke eher dass du das bearbeitet in die db schreibst ..
    kann das sein ?
    mfg,
    [color=#0080c0]Coragon[/color]

    Kommentar


    • #3
      nein, wirklich nicht!

      der text in der db enthält keine html tags und entitäten, ganz normaler deutscher text mit umlauten usw. und natürlich \n 's

      ich kapier das auch nicht ?!?

      Kommentar


      • #4
        ok das hier ist interessant...

        PHP-Code:
        $newsarr = array();

        ...
                if(
        mysql_num_rows($result))
                {
                    while(
        $row mysql_fetch_array($result))
                    {
                        
        //$article = htmlspecialchars($row['news_article']);
                        
        $x nl2br($row['news_article']);
                        
                        echo 
        $x;
                        
                        
        array_push($newsarr, array
                        (
                            
        'NEWS_DATE'    => date('d.m.y'$row['news_date']),
                            
        'NEWS_HL'      => htmlspecialchars($row['news_headline']),
                            
        'NEWS_ARTICLE' => $x
                        
        ));        
                    }
                } 
        der text, den ich mit echo ausgebe, wir korrekt ausgegeben. den text den ich in den array pushe nicht...

        Kommentar


        • #5
          was passiert wenn du nur $row['news_article']) ausgibst ?
          im quelltext siehst ja dann evtl umbrüche ..
          mfg,
          [color=#0080c0]Coragon[/color]

          Kommentar


          • #6
            also wenn ich jetzt statt echo $x; echo $row['news_article']; ausgebe, wird der text so wie er in der DB angelegt ist ausgegeben (also mit \n und ohne entitäten).

            hm??

            Kommentar


            • #7
              (nee sorry, das war blödsinn... gelöscht)
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                zumindest weisst du jetzt dass es an der funktion nl2br hacken muss ..
                sorry, aber da weiß ich nicht weiter ..

                möglicherweise hast du die funktion irgendwo überschrieben (wenn das mal geht)
                mfg,
                [color=#0080c0]Coragon[/color]

                Kommentar


                • #9
                  möglicherweise hast du die funktion irgendwo überschrieben (wenn das mal geht)
                  ich vermute eher, dass er nachher noch irgendwo ein htmlspecialchars oder -entities drin hat, evtl. bei der ausgabe der daten...
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    @ wahsaga

                    sie dir doch den schnipsel an:

                    PHP-Code:
                    $x nl2br($row['news_article']);                
                    echo 
                    $x
                    mfg,
                    [color=#0080c0]Coragon[/color]

                    Kommentar


                    • #11
                      ich versteh's ja auch nicht

                      hat sonst immer geklappt, ka wo ich den fehler suchen soll.

                      ich verwende auch das vlib template system, aber um da zb. das <br />
                      tag zu überschreiben müsste ich eine extra option angeben, hab ich aber nicht.

                      und nl2br hab ich auch nirgends überschrieben, geht auch gar nicht *g*

                      *verzweifel*

                      Kommentar


                      • #12
                        Hallo!

                        Das problem ist, soweit ich erinnere, das wie auch immer (nicht)
                        gefüllte Array auf das htmlspecialchars zurüchgreift!

                        habs irgendwann aufgegeben und per hand gemacht !!
                        PHP-Code:
                        function htmlspecialcharsHTML($text) {
                            
                        $ret htmlspecialchars($text);
                            
                        $ret str_Replace("Ä""&Auml;"$ret);
                            
                        $ret str_Replace("Ö""&Ouml;"$ret);
                            
                        $ret str_Replace("Ü""&Uuml;"$ret);
                            
                        $ret str_Replace("ä""&auml;"$ret);
                            
                        $ret str_Replace("ö""&ouml;"$ret);
                            
                        $ret str_Replace("ü""&uuml;"$ret);
                            
                        $ret str_Replace("ß""&szlig;"$ret);    
                            
                        $ret str_Replace("&lt;""<"$ret);
                            
                        $ret str_Replace("&gt;"">"$ret);
                            return 
                        $ret;

                        (beliebig erweiterbar ...)

                        Orestes
                        Risc is part of the game if you want to sit in the captain´s chair.

                        Kommentar


                        • #13
                          ok, das probier ich heute abend mal aus!

                          melde mich dann mal wenn's klappt. danke erstmal

                          Kommentar


                          • #14
                            ok, ich hab jetzt alles durch

                            aber nichts funzt

                            irgendwie weiss ich voll nicht weiter *hmpf*

                            warum kann ich nichts formatieren?? auch das datum kann ich nicht formatieren...

                            hab's mittlerweile auch so probiert:

                            PHP-Code:
                            $newsarr[$c]['NEWS_DATE'] = date('d.m.y'$row['news_date']);
                            $newsarr[$c]['NEWS_HL'] = $row['news_headline'];
                            $newsarr[$c]['NEWS_ARTICLE'] = nl2br($row['news_article']); 
                            ist ja das gleiche, aber da die \n's immernoch wie folgt umgewanelt werden... &lt;br /&gt;

                            kann's ja an array_push nicht liegen. ich dreh durch

                            in der mysql db hab ich auch die richten typen verwendet: timestamp(6 stellen), varchar und text.

                            ----------------------------------------------------

                            ich post mal die funktion:

                            PHP-Code:
                                function getNews()
                                {
                                    
                            $newsarr = array();
                                    
                            $query 'SELECT news_date, news_headline, news_article FROM news';
                                    
                            $result mysql_query($query) or die(mysql_error());
                                    
                            //$c = 0;
                                    
                                    
                            if(mysql_num_rows($result))
                                    {
                                        while(
                            $row mysql_fetch_array($result))
                                        {    
                                            
                            $article htmlspecialchars($row['news_article']);
                                            
                                            
                            array_push($newsarr, array
                                            (
                                                
                            'NEWS_DATE'    => date('d.m.y'$row['news_date']),
                                                
                            'NEWS_HL'      => htmlspecialchars($row['news_headline']),
                                                
                            'NEWS_ARTICLE' => nl2br($article)
                                            ));
                                            
                                            
                            /*$newsarr[$c]['NEWS_DATE'] = date('d.m.y', $row['news_date']);
                                            $newsarr[$c]['NEWS_HL'] = htmlspecialchars$row['news_headline'];
                                            $newsarr[$c]['NEWS_ARTICLE'] = nl2br($row['news_article']);
                                            
                                            $c++;*/            
                                        
                            }
                                    }
                                    
                                    
                            mysql_free_result($result);
                                    return 
                            $newsarr;        
                                } 
                            vieleicht wird's so deutlich was ich für ein prob habe
                            Zuletzt geändert von polar; 03.02.2003, 23:32.

                            Kommentar


                            • #15
                              und du kannst wirklich mit absoluter sicherheit sagen, dass die daten in der datenbank richtig drinstehen, also wirklich zu 100% ausgeschlossen, dass da schon &lt;br&gt; oder sowas drinsteht?

                              ich würde das erstmal kontrollieren; einfach mal daten selektieren und sofort danach völlig unformatiert ausgeben, und mal schauen, was im quelltext der ausgegeben html-seite drin steht.
                              I don't believe in rebirth. Actually, I never did in my whole lives.

                              Kommentar

                              Lädt...
                              X