dポイントプレゼントキャンペーン実施中!

PHPのpreg_match()でメールアドレスが対象のドメインに所属するかどうかをチェックするスクリプトを作成しようと以下を作成しました。

$ptn = preg_quote("abc.co.jp$");
$str = "user1@abc.co.jp";
$cnt = preg_match("/$ptn/", $str, $matches);

予定では上記で$cntに1が入ると考えていたんですが、
0が返ってきてしまいます。
preg_match()の使い方が誤っているのでしょうか?

すいませんが、よろしくおねがいします。

A 回答 (1件)

その処理ならマッチしません。


$ptnは、下のようにすればいいです。
$ptn = preg_quote("abc.co.jp") . '$';

この回答への補足

回答ありがとうございます。
回答頂いた内容でマッチさせることができました。
$ の扱いの誤りでした。

ということは
preg_quote()の引数は実際には固定ではなくファイルから読み込んだ値の変数になるのですが、
その場合、preg_match()に渡すパターン文字列は、preg_quote()を使用するのではなく独自にエスケープしてあげないと
いけないのでしょうか?

すいませんがよろしくお願いします。

補足日時:2009/11/11 14:30
    • good
    • 0

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