PHPエラー「Parse error: syntax error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING」の原因

PHPプログラミングでミスを犯し、PHPエラーとして以下のようなエラーが出ることがある。

Parse error: syntax error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\nobuneko\test.php on line 20

このエラーは、ある変数に文字列を入れる際に出た。意味としては、"(ダブルクォーテーション)の扱い方が間違っている、ということ。

《例》
誤 $path = "C:¥nobuneko¥";
正 $path = "C:¥nobuneko¥¥";

この例の「誤」の場合、パスとして末尾の¥(円マーク)も含めて変数「$path」に「C:¥nobuneko¥」を入れようとしているが、¥(円マーク)はPHP言語では「エスケープシーケンス」となるので、"(ダブルクォーテーション)の前に置いたら"(ダブルクォーテーション)がエスケープされてしまい、


"文字列"
という書式が
"文字列

という書式になってしまって"(ダブルクォーテーション)の開始部分はあるが終了部分(閉じ部分)がないと見なされてるようだ。
この場合、この例の「正」のように¥(円マーク)を2つ並べて書くことで直後の"(ダブルクォーテーション)をエスケープすることなく、¥自身を文字列として変数に入れることができる。
ディレクトリのパスを文字列として変数に入れる時にはこの例のようにエスケープシーケンスの件を忘れてミスをしてしまうことがあるので注意が必要。

※ここでは「¥」を全角文字で記載しているが、実際には半角文字。半角の¥はブラウザで\(バックスラッシュ)と表示されてしまって話が分かりにくくなってしまったので、ここでの話を分かりやすくするために全角で書いた。

  
 

前へ

カラクリ時計(放生園)前の工事の様子 (愛媛県松山市道後湯之町6-7)

次へ

ぼんち ウマッ辛カレーつな揚げ