• ベストアンサー

preg_matchと定数について

preg_matchと定数について $string = "○○ドメイン"; if (preg_match("/$string/", $_SERVER['SERVER_NAME'])) {  echo "○"; } else {  echo "✕"; とやると○になるのですが、 define("DOMAIN", "○○ドメイン"); if (preg_match("/DOMAIN/", $_SERVER['SERVER_NAME'])) {  echo "○"; } else {  echo "✕"; } とすると、✕になります。 なぜでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5253/13739)
回答No.1

変数の場合 $ で始まるので変数名だと明示されているため処理ができますが、定数の場合ダブルクォーテーションのなかで使われると文字列なのか定数なのか判断する術が無いから、単なる文字列として扱われてしまいます。 if (preg_match("/".DOMAIN."/", $_SERVER['SERVER_NAME'])) { として使いましょう。

re999
質問者

お礼

回答&詳細な解説ありがとうございました。 おかげで無事動作しました!

関連するQ&A