[Funktion] Funktion haut nicht hin.

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

  • [Funktion] Funktion haut nicht hin.

    Guten Tag,

    warum haut das Mistvieh von Funktion nicht hin.

    PHP-Code:

    function returnHTMLCompatible($arr)
        {
            foreach(
    $arr as $key => $value) {
                if (
    is_array($value)) {
                                                        
    /* recursive call to test whether the array is still multidim or not */
                                                        
    $arr[$key] = $this->returnHTMLCompatible($value); 
                                                    } else {
                                                                    foreach(
    $arr as $key => $value) {    
                                                                                    
    $reg "<sup>&reg;</sup> ";
                        
    $arr[$key] = ereg_replace('®'$reg$arr[$key]);
                        
    $arr[$key] = htmlentities($value);
                        
    $arr[$key] = nl2br($value);
                                                                    }
                }
                                        }

                           return 
    $arr;
        }

    // Die Funktion wird so aufgerufen:

        /* retrieve news details */
                    
    $res =& $db->query("SELECT *
                                        FROM news
                                                                                  WHERE (lang = '"
    .$language."') 
                                                                                                    AND (id = '"
    .$id."')");
                                                                                                    
    $row  =& $res->fetchRow(DB_FETCHMODE_ASSOC);               $newsDetails $page->returnHTMLCompatible($row); 

    Die macht garnicht was sie soll. Waoran kann das liegen ?
    Habe mir das arry may mil print_r() ausgeben lassen. Ein "&" wird nicht in "&amp;" konvertiert.
    Zuletzt geändert von compuboy1010; 14.06.2004, 13:51.

  • #2
    Re: [Funktion] Funktion haut nicht hin.

    Die macht garnicht was sie soll. Waoran kann das liegen ?
    Habe mir das arry may mil print_r() ausgeben lassen. Ein "&" wird nicht in $amp; konvertiert.

    wurdest du nicht heut schonmal auf deine noob-questions angesprochen?

    du willst das ampersand in $amp; umwandeln? typo? hast du dir mal den quelltext der anzeige angeschaut?
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      Ja sicher schaue ich mir den Quelltext an. Ungefähr jede MInute. Benutze folgenden Validator.

      Es hört sich so an als sähest du das Problem. Was sind noob-questions? Habe ich denn heute einen Holzfabrik vor dem Kopf ?

      http://www.htmlhelp.com/tools/validator/direct.html

      Habe gesehen was du meinst und es korrigiert.

      Zuletzt geändert von compuboy1010; 14.06.2004, 13:52.

      Kommentar


      • #4
        Habe gesehen was du meinst und es korrigiert.
        benutzt mal die edit-tags, ich erschreck mich immer so ...

        geht es jetzt?
        EDIT:
        beim print_r wird afaik das &amp; auch nur als &amp; angezeigt, im source müßtest du aber &amp;amp; sehen ...
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar


        • #5
          Nein haut nicht hin.

          Der Validator spuckt immer noch den gleichen Fehler aus.
          Die Funktion scheint überhaupt nicht hinzuhauen.
          Die stellt mit auch nicht dir registereed Zeichen höher.

          Obwohl die sieht mir eigentlich korrekt aus.

          Hmmm ...

          Was ist das los ?

          Kommentar


          • #6
            Habe die Funktion mal abgeändert.
            Die 2. foreach war überflüssig.

            Funzt aber immer noch nicht:

            PHP-Code:
                            function returnHTMLCompatible($arr)
                {
                    foreach(
            $arr as $key => $value) {
                        if (
            is_array($value)) {
                                                                
            /* recursive call to test whether the array is still multidim or not */
                                                                
            $arr[$key] = $this->returnHTMLCompatible($value); 
                                                            } else {
                                                                            
            $reg "<sup>&reg;</sup> ";
                            
            $arr[$key] = ereg_replace('®'$reg$arr[$key]);
                            
            $arr[$key] = htmlentities($value);
                            
            $arr[$key] = nl2br($value);
                        }
                                                }

                                   return 
            $arr;
                } 

            Kommentar


            • #7
              Ich fasse es nicht. Ich bin selber drauf gekommen.

              [PHP]

              function returnHTMLCompatible($arr)
              {
              $reg = "<sup>&reg;</sup>";
              foreach($arr as $key => $value) {
              if (is_array($value)) {
              /* recursive call to test whether the array is still multidim or not */
              $arr[$key] = $this->returnHTMLCompatible($value);
              } else {
              $value = ereg_replace('®', $reg, $arr[$key]);
              $value = htmlentities($value);
              $value = nl2br($value);
              $arr[$key] = $value;
              }
              }

              return $arr;
              }
              [PHP]

              Wenn mir nun noch jemand erklären könnte warum es klappt und nicht wie vorher wäre das FaNtAsTiScH.

              Nun gibt es allerdings ein weiteres tolles Problem.
              htmlentities gibt mir das aus, so dass als tatsächliche Aushabe die entities kommen. Weiß nicht, ob man einfach htmlspecialchars verwenden könnte.


              &lt;sup&gt;&amp;reg;&lt;/sup&gt;

              Kommentar


              • #8
                Original geschrieben von compuboy1010
                Wenn mir nun noch jemand erklären könnte warum es klappt und nicht wie vorher wäre das FaNtAsTiScH.
                Jupp, ich denke, das kann ich erklären. Beim ersten Versuch hast du dein $arr[$key] immer wieder neu überschrieben und daher dürfte nur das nl2br() Auswirkungen gehabt haben. Wenn du den Funktionen immer $arr[$key] statt $value übergeben hättest, hätte es funktioniert. $value wird eben nur am Anfang des Schleifendurchlaufs einmal gesetzt.

                Und normal sollte html_specialchars() statt htmlentities() keine Probleme machen. Eine Alternative wäre, daß du zuerst htmlentities() machst und dann &reg; durch <sup>&reg;</sup> ersetzt.
                Zuletzt geändert von kevin; 14.06.2004, 18:45.

                Kommentar

                Lädt...
                X