がるの健忘録

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

小ネタ:コメント形式に注意

元々は、小山さんがfacebookでお話をされていた内容がベースなのですが。
そちらのお話だと

「$data = preg_replace('~()~isD', $header_css . $css . $js . '$1', $data, 1);」といった感じの行を // でコメントアウトしたらsyntax errorになったお!!

的なお話でございました。
この辺をもっそ簡略的に、下記のコードで挙動を確認してみました。


まずは「普通に動く」コード。

<?php

echo "?>\n";


で。コメントアウトすると…挙動がおかしい!!

<?php

//echo "?>\n";

\n";


さて念の為。

<?php

/*echo "?>\n";*/

…おや問題なく意図通りに動く。


理由は、以下の通り。
http://php.net/manual/ja/language.basic-syntax.comments.php

"一行"コメントは、改行または PHP コードのブロックの終わり のうちどちらか最初にくる方までです。 つまり、// ... ?> あるいは # ... ?> の後に続く HTML コードは 表示されるということです。

"一行"コメントは、改行または PHP コードのブロックの終わり のうちどちらか最初にくる方まで。
PHP コードのブロックの終わり…
PHP コードのブロックの終わり!!
「つまり、// ... ?> あるいは # ... ?> の後に続く HTML コードは 表示されるということです。」?
「つまり、// ... ?> あるいは # ... ?> の後に続く HTML コードは 表示されるということです。」…
「つまり、// ... ?> あるいは # ... ?> の後に続く HTML コードは 表示されるということです。」!!!


びっくりですねぇ驚きですねぇワンダーですねぇ。
…なんでこんな仕様にしたんだろう?


なかなか引っかかるケースもレアかとは思うのですが、引っかかるとかなり「頭が痛い」と思われるので、メモり。