Mit PHP ausgelesenen HTML-Code mit JavaScript ausgeben

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

  • Mit PHP ausgelesenen HTML-Code mit JavaScript ausgeben

    Hallo!

    Folgende Situation:

    Ich biete Benutzern auf meiner Seite (php-Datei) an, eine Datei (html) hochzuladen um diese dann online zu bearbeiten. Ich verwende für das Hochladen ein Uploadformular mit einem "file"-Feld. Der Code des Formulars ist folgender:

    PHP-Code:
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data" method="post" name="fileopen">
    <input name="Datei" type="file" size="35" maxlength="102400"></form>
    Als "action" ist die PHP-Datei selbst vorgesehen. Hier der PHP-Code zum Auswerten des Uploads:

    PHP-Code:
    <?php
    if($_FILES['Datei']['tmp_name'])
        {
            if(
    $_FILES['Datei']['size']<102400)
            {
                if(
    $_FILES['Datei']['type']=="application/xhtml+xml" Or $_FILES['Datei']['type']=="text/html")
                {
                    
    //echo "Die ausgewählte Datei wurde erfolgreich hochgeladen und im Editor geöffnet.";
                    
    $datei $_FILES['Datei']['tmp_name']; // Name der Datei
                    
    $array file($datei); // Datei in ein Array einlesen
                    
    for ($x 0$x count($array); $x++)
                    {
                        
    $inhalt.=$array[$x] . " \n"// Datei-Inhalt ausgeben
                    
    }
                }
                else
                {
                    
    //echo "Der Dateityp der ausgewählten Datei wird leider nicht unterstützt.";
                
    }
            }
            else
            {
                
    //echo "Die von Ihnen ausgewählte Datei ist zu groß!";
            
    }
        }
        else
        {
            
    //echo "Sie haben vergessen, eine Datei zum Öffnen anzugeben.";
        
    }
    ?>
    Der Inhalt der hochgeladenen Datei wird auch richtig ausgelesen. Nun brauche ich den Inhalt der Datei (also den HTML-Code in der PHP-Variable $inhalt) unbedingt in einer JavaScript-Variable und ich weiß nicht wie ich das anstellen kann. Ich habe auch schon über Google gesucht und alles mögliche selber ausprobiert, aber ich habs nicht hinbekommen.

    Ich hoffe ich konnte mein Problem halbwegs verständlich rüberbringen, sodass ihr mir helfen könnt.

    Schöne Grüße,

    Finn! ;-)

  • #2
    also ich bin nicht sicher ob ich es kapiere, aber warum kannst du nicht einfach sowas machen:

    var a = <?php echo $inhalt; ?>;

    Kommentar


    • #3
      Also ersmtal Danke für deine Antwort!

      Das war auch das erste was ich versucht habe, aber dann habe ich immer eine Fehlermeldung bekommen (von JavaScript) "Unabgeschlossene Zeichenfolge" (oder so ähnlich). Ich habe viele Sachen versucht (u. a. " durch ' ausgetauscht und umgekehrt, die PHP-Funktion StripSlashes (oder ähnlich) und vieles mehr). Aber immer bekomme ich den oben genannten Fehler.

      Vielleicht sollte ich dazu sagen, warum ich das so mache: Ich verwende auf der Seite den FCKEditor und möchte den Value-Wert (also den Inhalt des FCKEditors) mit dem Inhalt aus der hochgeladenen Datei füllen. Also im Prinzip FCKEditor.Value = '<?php echo $inhalt; ?>', aber das funktioniert einfach nicht. Ich verzweifel langsam

      Schöne Grüße,

      Finn! ;-)

      Kommentar


      • #4
        htmlentities könnte auch noch helfen. und escapen.
        http://de2.php.net/manual/de/function.htmlentities.php
        mfg

        Kommentar


        • #5
          und was zeigt es denn im Quelltext an? es muss ja etwas anzeigen wenn ein Fehler kommt.

          Kommentar


          • #6
            Habe ich auch schon beides (leider erfolglos) probiert. Ich denke das Problem liegt darin, dass der ausgelesene Dateiinhalt mehrzeilig sein könnte, aber genau weiß ich es nicht...

            Kommentar


            • #7
              Vom Quelltext wird nichts angezeigt. Aber ich versuche mal die komplette Situation zu beschreiben.

              Ich habe den FCKEditor in meine Homepage eingebunden und er funktioniert. Nun wollte ich aber, dass der Benutzer Dateien öffnen kann, indem er diese Datei hochlädt und der Dateiinhalt dann automatisch ausgelesen wird und in den Editor geschrieben wird.

              Realisiert habeich das so (was ja auch bis auf diese Kleinigkeit funktioniert):

              Ich habe ein Plug-In für den FCKEditor geschrieben, das ein Dialog (Webpage Dialog, so wie die andern Dialoge des Editors auch) öffnet. Darin kann der User die Datei zum uploaden auswählen und dann auf OK klicken.

              Das funktioniert soweit. Doch jetzt kommt die Stelle, ab der es zu Problemen kam.

              Mit dem Klick auf OK soll die Datei hochgeladen werden und ausgelesen werden (nachdem übeprüft wurde, ob sie vom Typ HTML ist und kleiner als 100 KB ist). Der Inhalt der Datei (HTML-Code) soll dann wieder in den FCKEditor zurückgeschrieben werden.

              Ich hoffe jetzt ist es nachvollziehbar. Wenn du Quellcodeausschnitte brauchst, dann sag Bescheid.

              Schöne Grüße,

              Finn! ;-)

              Kommentar


              • #8
                im Quelltext wo du var a = <?php echo $inhalt; ?>; geschrieben hast muss was stehen!

                Kommentar


                • #9
                  probier das mal mit dieser funktion. nachteil: es haut dir die newlines weg

                  PHP-Code:
                  <?php

                  function mkjs($string){
                      
                  $string explode("\n",$string);
                      
                  $count count($string);
                      
                  $i 0;
                      
                  $v "";
                      foreach(
                  $string as $zeile){
                          
                  $zeile htmlentities(addslashes(trim($zeile)));
                          if(
                  $i==$count-1){
                              
                  $v.= "\"$zeile\";";
                          }else{
                              
                  $v.= "\"$zeile\"+\n";
                              
                  $i++;
                          }
                      }
                      return 
                  $v;
                  }


                  $s ="ich bin
                  ein
                  mehrzeiliger text <a href=\"jhj\">kjjlkj</a>"
                  ;

                  echo 
                  "<script>\nvar a = ".mkjs($s)." \nalert(a);\n</script>";
                  ?>
                  mfg

                  Kommentar


                  • #10
                    Bei einer einfachen Datei zum Beispiel steht folgendes da (ich habe es zum Testen mal mit document.write gemacht):

                    PHP-Code:
                    document.write('<?xml version="1.0" encoding="iso-8859-1"?>
                     
                    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
                     
                         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
                     
                    <html xmlns="http://www.w3.org/1999/xhtml">
                     
                    <head>
                     
                    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
                     
                    <title>QuickKlick.net - Nachrichten</title>
                     
                    <link href="css/theme.css" rel="stylesheet" type="text/css" />
                     
                    <link href="css/design.css" rel="stylesheet" type="text/css" />
                     
                    <script type="text/javascript" src="script/JSCookMenu.js"></script>
                     
                    <script type="text/javascript" src="script/theme.js"></script>
                     

                    <script type="text/javascript" src="script/SetMenu.js"></script>
                     
                    <script type="text/javascript" src="script/functions.js"></script>
                     
                    </head>
                     

                     
                    <body>
                     
                    <table border="1" cellpadding="0" width="100%" style="border-color: #CCCCCC; height: 100%; border-collapse: collapse; border-style: solid">
                     
                      <tr>
                     
                        <td height="64" colspan="2" align="left" valign="top" bgcolor="#8E9DB8" style="border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: #CCCCCC"><img src="images/sitebanner.gif" alt="QuickKlick.net" /></td>
                     
                      </tr>

                     
                      <tr>
                     
                        <td width="160" bgcolor="#EEEEEE" align="left" valign="top" style="border-right-style: solid; border-right-width: 1px; border-right-color: #CCCCCC">
                     
                                <table border="0" width="100%" style="border-collapse: collapse; background-image: url(images/header_back.gif)">
                     
                                <tr>
                     
                                    <td><span class="BoldText">&nbsp;Navigation</span></td>
                     
                                </tr>
                     
                            </table>
                     
                            <div id="Navigation"><script type="text/javascript"><!--
                     
                                cmDraw ('Navigation', Navi, 'vbr', cmThemeOffice, 'ThemeOffice');
                     
                            --></script></div>

                     
                            <table border="0" width="100%" style="border-collapse: collapse; background-image: url(images/header_back.gif)">
                     
                                <tr>
                     
                                    <td><span class="BoldText">&nbsp;Funktionen</span></td>
                     
                                </tr>
                     
                            </table>
                     
                            <div id="Funktionen"><script type="text/javascript"><!--
                     
                                cmDraw ('Funktionen', Funk, 'vbr', cmThemeOffice, 'ThemeOffice');
                     
                            --></script></div>
                     
                                </td>
                     
                        <td align="left" valign="top"><table width="100%" border="0" style="height: 100%; border-collapse: collapse; border-color: #CCCCCC">

                     
                        <tr>
                     
                            <td align="left" valign="top" height="100%" style="border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: #CCCCCC">
                     
                                <table border="0" width="100%" style="border-collapse: collapse; border-color: #CCCCCC" cellpadding="5">
                     
                                    <tr>
                     
                                      <td align="left" valign="top"><span class="NormalText"><?contentInclude?></span>
                     
                                      </td>
                     
                                    </tr>
                     
                                </table>
                     
                            </td>

                     
                        </tr>
                     
                        <tr>
                     
                            <td bgcolor="#eeeeee">
                     
                                <table border="0" width="100%" style="border-collapse: collapse; border-color: #CCCCCC" cellpadding="5">
                     
                                    <tr>
                     
                                        <td><span class="FooterText">Copyright &copy; 2006 Finn Teegen. Alle Rechte vorbehalten.<br /><br /><a href="http://validator.w3.org/check?uri=referer" target="_blank"><img src="images/logos/xhtml10.gif" alt="Valid XHTML 1.0 Transitional" width="80" height="15" style="border-width: 0px" /></a>&nbsp;<a href="http://jigsaw.w3.org/css-validator/check/referer" target="_blank"><img src="images/logos/css.gif" alt="Valid CSS" width="80" height="15" style="border-width: 0px" /></a>&nbsp;<a href="http://www.validome.org/referer" target="_blank"><img src="images/logos/validome_xhtml_1_0.GIF" alt="Valid XHTML 1.0 Transitional" width="80" height="15" style="border-width: 0px" /></a>&nbsp;<a href="http://www.microsoft.com/windows/ie_intl/de/default.mspx" target="_blank"><img src="images/logos/getinternetexplorer.gif" alt="Get the Microsoft Internet Explorer" width="80" height="15" style="border-width: 0px" /></a>&nbsp;<a href="http://www.mozilla-europe.org/de/products/firefox/" target="_blank"><img src="images/logos/firefox.gif" alt="Get the Firefox Browser" width="80" height="15" style="border-width: 0px" /></a>&nbsp;<a href="http://www.opera.com/lang/de/" target="_blank"><img src="images/logos/getopera.gif" alt="Get the Opera Browser" width="80" height="15" style="border-width: 0px" /></a>&nbsp;<a href="http://www.quickklick.net/error.php" target="_self"><img src="images/logos/fehler_gruen.gif" alt="Fehler melden" width="80" height="15" style="border-width: 0px" /></a><br /><br />Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen L&auml;ndern. Weitere auf dieser Homepage aufgef&uuml;hrten Produkt- und Firmennamen k&ouml;nnen gesch&uuml;tzte Marken ihrer jeweiligen Inhaber sein.</span></td>

                     
                                    </tr>
                     
                                </table>
                     
                            </td>
                     
                        </tr>
                     
                    </table></td>
                     
                      </tr>
                     
                    </table>
                     

                     

                     
                    </body>
                     

                    </html>');
                    Schöne

                    Grüße,

                    Finn! ;-)

                    Edit: Tut mir Leid wenn das so breit geworden ist (habe nur das Original kopiert. Das ist nur der document.write Befehl. Es liegt also wie vermutet an der "Mehrzeiligkeit". Nur weiß ich nicht genau, wie ich das umgehen kann.

                    Kommentar


                    • #11
                      Also ich habe es jetzt mal eingebaut und werde es mal in den nächsten Stunden testen. Das heißt ich werde mich wahrscheinlich erst heute Abend (oder morgen) wieder melden.

                      Schöne Grüße,

                      Finn! ;-)

                      Kommentar


                      • #12
                        Gott sei Dank, ist mein Bildschirm 14080 Pixel breit. Ansonsten hätt ich wohl den beantworten-Button nicht gefunden.

                        Kommentar


                        • #13
                          ja..es liegt an den mehrzeilen !

                          jvascript kann nur einen string ausgeben wenn kein zeilenumbruch stat findet.

                          es gibt 2 wege das zu mahcen:

                          1. weg : du machst eine PHP replace() auf \r\n und machst sozusagen aus den HTML daten ein einzeiler den du mit echo ausgibst

                          2. weg: du liest die HTML datei(im sever) zeile für zeile ein..
                          und fügst jede zeile zu einem string zusammen.
                          bsp.:
                          $fp = @fopen("html_datei", "r") or die ("HTML Datei nicht voranden.");
                          while ($line = fgets($fp, 1024)) {
                          $zeile .= "document.write('".$line."');\r\n"
                          }
                          fclose($fp);
                          echo $zeile;
                          Zuletzt geändert von celestino; 12.08.2006, 03:02.

                          Kommentar


                          • #14
                            Also ich habs jetzt mal die Funktion von "hall" eingebaut und sie funktioniert soweit.

                            Vielen Dank nochmal.

                            Ich werde mich nochmal melden falls ich Probleme habe.

                            Schöne Grüße,

                            Finn!

                            Kommentar

                            Lädt...
                            X