1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Problem mit HEREDOC

Dieses Thema im Forum "PHP" wurde erstellt von Fragenfrager, 9. Mai 2012.

  1. Fragenfrager

    Fragenfrager Grünschnabel

    Hallo liebes Forum,

    ich wollte einige meiner Codes lesbarer machen und auf HEREDOC umstellen. Zum Beispiel diesen hier:
    Code (PHP):
    1.  
    2. <?php
    3.  
    4. include("incs/funktionen.php");      // Funktion, die die Tabellen in den "Details" erstellt und füllt
    5.  
    6.  
    7. echo <<<HTML
    8. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    9.         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    10.       <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
    11.  
    12.   <head>
    13.       <title>Userabfragen</title>
    14.       <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    15.      
    16.       <link rel="stylesheet" type="text/css" href="incs/style.css" />  
    17.      
    18.    
    19.   </head>
    20.   <body>
    21.     <form action="index.php" method="post" accept-charset="ISO-8859-1">  <!-- Beginn des Formulars -->
    22.       <table>
    23.         <tr>
    24.           <th>Userabfragen im ERP System</th>
    25.         </tr>
    26.         <tr>
    27.           <td>
    28.             <label for "suchbegriff">Suchbegriff</label> <input name="suchbegriff" type="text" size="30" maxlength="30" tabindex="1" />
    29.             <input type="submit" value=" Absenden " tabindex="4"/>
    30.           </td>
    31.         </tr>    
    32.         <tr>
    33.           <td>
    34.             <b>Anmerkungen:</b> Es wird immer mit Wildcards gesucht: "eyer" findet "Meyerbeer".<br />
    35.            </td>
    36.         </tr>    
    37.       </table>
    38.      
    39.     </form>
    40. HTML;
    41. //es folgt noch mehr Code....
    42.  
    Dabei erhalte ich dann den Fehler:
    Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING
    Nach Befragung der gängigen Suchmaschinen habe ich schon überprüft, ob nach dem
    Code (PHP):
    1. echo <<<HTML
    ein Leerzeichen ist. Das ist nicht der Fall.
    Eigentlich sollte der HEREDOC-Inhalt doch relativ egal sein, oder?
    Habe ich da Denkfehler?
  2. Yaslaw

    Yaslaw n/a Moderator

    Welche PHP-Version hast du?
    Dein Code kurz mit PHP5.3.8 gestestet - funktioniert.
    Was immer wichtig ist, dass der End-Tag agnz vorne in der Zeile steht und nach dem ; keine Leerzeichen mehr folgen

    Code (Text):
    1. -- Die Folgenden Zeile (ohne ') geht nicht
    2. '   HTML;'
    3. 'HTML;     '
    4.  
    5. -- Es muss immer so sein (ohne ')
    6. 'HTML;'
  3. Fragenfrager

    Fragenfrager Grünschnabel

    Ich habe auch die 5.3.8 und nun die Lösung gefunden.
    Ich habe testweise einmal den Zeilenumbruch zwischen "echo <<<HTML" und "<!DOCTYPE ...." nicht mit <RETURN>, sondern mit <shift><RETURN> gemacht. Das müsste meinem Editor (PSPad) eigentlich egal sein, aber nun funktioniert es.
    Seltsame Lösung :)
  4. Yaslaw

    Yaslaw n/a Moderator

    Dann hattest du nach dem <<<HTML vom Shift-Enter noch irgend ein Sonderzeichen drin.

Diese Seite empfehlen