4

これにより、出力ページ OK が生成されます

$mystring = "<<<EOT";

それを次のように置き換えると、

解析エラー: 構文エラー、737 行目の file.php の予期しない $end

$mystring = <<<EOT
   This is some PHP text.
   It is completely free
   I can use "double quotes"
   and 'single quotes',
   plus $variables too, which will
   be properly converted to their values,
   you can even type EOT, as long as it
   is not alone on a line, like this:
EOT;

パーサーがチョークする原因についてのアイデアはありますか?

PHP 4.4.7 を使用しています。

この動作が発生するのは 1 つのファイルだけです。他のすべてのファイルは、PHP で定義された機能に従います。

私が復唱しようとしているのは、この失敗で PHP パーサーが表示されるように、後続の行で何が間違っている可能性があるかということです。

ジョン

ファイルの内容を次のように変更しました:-

<?php

$mystring = <<<WHATEVER
   This is some PHP text.
WHATEVER;
?>

結果 =

解析エラー: 構文エラー、5 行目の file.php の予期しない $end

手がかり

編集

元のエラーはこれに関係していましたT_ENCAPSED_AND_WHITESPACEが、jQuery で発生する可能性があります。たとえば、" if(x == y){$('#my_image').hide():}" はヒアドキュメント内にあります。

編集

2 良い反応。

1) Ch4m3l3on - " <?php" vs " <?" の扱い。

2) The Disintegrator - <q>BOM を utf-8 ファイルに入れることを主張する愚かなプログラム (設定を無視) で同様の問題がありました</q>

編集

1)すべてのコンテンツを単一のブロックに置き換えても、問題は解決せず、他のポインターも提供されませんでした。

2) BOM (バイト オーダー マーク) はありません。

4

7 に答える 7

12

終了ヒアドキュメントを行頭に配置する必要があります。インデントのある IDE を使用している場合は、それらを削除してください。終了ヒアドキュメントは、終了 PHP タグと同じ行に縦方向に配置する必要があります(

于 2012-04-20T17:16:40.433 に答える
8

「WHATEVER;」の後に何もないことを確認してください。スペースでも解析エラーが発生します。その行を削除して、<enter>セミコロンを入力した直後にヒットして、もう一度入力します。

于 2009-08-13T00:05:30.990 に答える
5

そのEOTを確認してください。本当にラインの始まりにあります。

if ($muh="kuh") {
     $foo = <<<EOT
           some text text text
EOT;
}
于 2009-08-12T14:26:28.583 に答える
2

試してみるとどうなりますか:

$mystring = <<<'EOT'
...
EOT;

(最初の前後の一重引用符に注意してくださいEOT)

于 2009-08-12T14:23:33.720 に答える
0

閉じていない中括弧 (または中括弧、覚えていない) があるかどうかを確認する必要があります。

例えば:

<?php

while(true) {
    echo "Something\n";

?>

そのエラーが発生します。

于 2009-08-12T17:27:16.070 に答える
0

uptic の担当者はいませんが、Ch4m3l3on と Pedro Cuhna は正しいです...間違ったヒアドキュメントが原因で予期しない $end エラーが発生することはおそらくありませんが、中括弧が閉じていない場合は間違いなく発生します。

于 2010-11-17T14:09:03.413 に答える
0

それをファイルにコピーして貼り付けるだけで、エラーなしで実行されました。(PHP 5.2.8 (cli) (ビルド: 2009 年 2 月 6 日 12:33:08))

したがって、問題はおそらくそのコードに近いものですが、質問に含めたものではありません。

それか、バージョンがビルドされてからの PHP の変更のいずれかです。

于 2009-08-12T14:24:10.693 に答える