[PHP] 一行コメントアウトの盲点 : してログ

[PHP] 一行コメントアウトの盲点

PHP正規表現 2013111

正規表現で html を処理する下記のようなコード、一行コメントアウト(ダブルスラッシュ)でコメントアウトすると致命的なエラーになります。これ、何故だか分かりますか? 私はこれで小一時間ほど、悶々としていました。

preg_match('/<a.+?>(.+?)<\/a>/su',$html,$match);

これは一行コメントアウトが、それを書いた場所から改行コードまでをコメントアウトするもの、という認識でいる限り分かりません。正しくは「改行コードまたは PHP コードブロックの終わり」までをコメントアウトするもの(こちらのマニュアル参照)です。PHP コードブロックの終わりとは、すなわち「?>」のことであり、上記の正規表現内に文字の並びとして現れています。

結果、行末までのコメントアウトとならず、途中で PHP コードブロックから外れて直接ソースコードが出力されるばかりか、致命的な構文エラーの原因となってしまいます。このようなコードをコメントアウトしたい場合は、複数行コメント(「/*」と「*/」)で囲みます。

特に、今回のような html を処理する場合の正規表現式で出てきそうな、この形は注意したいところです。

0 件のコメント
名前:
コメント: