problem mit htmlspecialchars & nl2br

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

  • 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]

    Comment


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

      Comment


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

        Comment


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

          Comment


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

            Comment


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

              Comment


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

                Comment


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

                  Comment


                  • #10
                    @ wahsaga

                    sie dir doch den schnipsel an:

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

                    Comment


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

                      Comment


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

                        Comment


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

                          melde mich dann mal wenn's klappt. danke erstmal

                          Comment


                          • #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
                            Last edited by polar; 03-02-2003, 22:32.

                            Comment


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

                              Comment

                              Working...
                              X