アプリ版:「スタンプのみでお礼する」機能のリリースについて

phpでパースエラーが出るのですが、ドコが間違っているのかが解りません。
============エラー文=========================================
Parse error: syntax error, unexpected T_CHARACTER, expecting T_STRING or T_VARIABLE or T_NUM_STRING on line 296
=============================================================
============エラーのソース(左の数字が行番号)=================
295|$str = "
296|//<form method=\"post\" action=\"$SERVER[\"PHP_SELF\"]\" enctype=\"multipart/form-data\" >


472|</html>";
473|$str = mb_convert_encoding($str, "SJIS", "EUC-JP");
474|echo $str;
=============================================================
295行目の$strに296行目から472行目までのHTML記述を代入して最後の行で出力しようとしているものです。
ちなみに、296行目のエスケープ(//)は、エスケープしてもしなくても296行目にエラーが出ます。
どなたか心当たりありましたらご意見宜しくお願いします!

A 回答 (4件)

295 ~ 472まで処理も無くHTML記述なのですか?


なるべくそのままで考えると

$str = <<<STREND

<form method="post" action="{$_SERVER["PHP_SELF"]}" enctype="multipart/form-data" >


この間普通のHTML表記
配列は{$変数['キー']}
変数も{$変数}の方がミスが少ないでしょう


STREND;

で済ませた方が楽だとますよ。
エスケープ文字も不要だし。
    • good
    • 0
この回答へのお礼

どうやら皆さんのご教示の通り、変数の展開ミスが原因だったようです。
arexisさんの、ヒアドキュメントを使う方法もすごく手間が省けるので大変参考になりました!
ご回答下さった皆様、どうもありがとうございました☆

お礼日時:2008/02/06 23:50

#2です。


文字列を切りたくなければ、

295|$str = "
296|<form method=\"post\" action=\"{$SERVER['PHP_SELF']}\" enctype=\"multipart/form-data\" >


472|</html>";

の方が良。
変数名を「{}」で括って、「"」を「'」に変更。
    • good
    • 0

295|$str = "


296|<form method=\"post\" action=\"".$SERVER["PHP_SELF"]."\" enctype=\"multipart/form-data\" >


472|</html>";

に296行目を変更する。
    • good
    • 0

295|$str = "


296|//<form method=\"post\" action=\"$SERVER[\"PHP_SELF\"]\" enctype=\"multipart/form-data\" >

295|$str = "";
296|//<form method=\"post\" action=\"$SERVER[\"PHP_SELF\"]\" enctype=\"multipart/form-data\" >

もしくは
295|//$str = "
296|//<form method=\"post\" action=\"$SERVER[\"PHP_SELF\"]\" enctype=\"multipart/form-data\" >
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!