Problem mit HEREDOC

Fragenfrager

Erfahrenes Mitglied
Hallo liebes Forum,

ich wollte einige meiner Codes lesbarer machen und auf HEREDOC umstellen. Zum Beispiel diesen hier:
PHP:
<?php

include("incs/funktionen.php");      // Funktion, die die Tabellen in den "Details" erstellt und füllt


echo <<<HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

  <head>
      <title>Userabfragen</title>
      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> 
      
      <link rel="stylesheet" type="text/css" href="incs/style.css" />   
     
   
  </head>
  <body>
    <form action="index.php" method="post" accept-charset="ISO-8859-1">  <!-- Beginn des Formulars -->
      <table>
        <tr>
          <th>Userabfragen im ERP System</th>
        </tr>
        <tr>
          <td>
            <label for "suchbegriff">Suchbegriff</label> <input name="suchbegriff" type="text" size="30" maxlength="30" tabindex="1" />
            <input type="submit" value=" Absenden " tabindex="4"/>
          </td>
        </tr>     
        <tr>
          <td>
            <b>Anmerkungen:</b> Es wird immer mit Wildcards gesucht: "eyer" findet "Meyerbeer".<br />
           </td>
        </tr>     
      </table>
      
    </form>
HTML;
//es folgt noch mehr Code....
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
PHP:
echo <<<HTML
ein Leerzeichen ist. Das ist nicht der Fall.
Eigentlich sollte der HEREDOC-Inhalt doch relativ egal sein, oder?
Habe ich da Denkfehler?
 
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:
-- Die Folgenden Zeile (ohne ') geht nicht
'   HTML;'
'HTML;     '

-- Es muss immer so sein (ohne ')
'HTML;'
 
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 :)
 
Dann hattest du nach dem <<<HTML vom Shift-Enter noch irgend ein Sonderzeichen drin.
 

Neue Beiträge

Zurück