• ベストアンサー

ユーザーのアドレスを読み取る

ユーザーのアドレスを読み取るPHPプログラムを作っています。 詳細を言うと、 ユーザーにtextareaにアドレスをinputしてもらい、 それをsubmitで送信。 その後、その送信された文字列の中に@があれば、 正当なアドレスと認識してデータベースに保存、そして 「ご参加ありがとうございます」と表示。 ただし、これまでに同じアドレスが保存されている場合は、 ユーザーに「以前に登録されたアドレスです」と知らせる。 という単純なプログラムです。 以下のコードを見てください。 <html> <head> </head> <body> <?php $ad = $_POST["address"]; $file = fopen("adData.txt", "a");  //データベースを作成 fclose($file); $fileData = file("adData.txt");   //データベースの読み込み $j =0;               //カウンタ for($i=0;$j <count($fileData);$++)    { if($ad == $fileData)       //$adが$fileDataに含まれれば  $j++;               // $j >0             } .... と今ここでいきずまってます。 ここで質問なのですが、 $adに@が含まれるか否かを調べるにはどのようにしたらよいでしょうか? perlでいう $ad =~ /@/ のような表現はありますか? あと上のコードは正しいコードでしょうか? もしよければアドバイスをいただけますか。お願いします。

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

  • ベストアンサー
  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.1

preg_match()があります http://jp.php.net/manual/ja/function.preg-match.php ちなみに、@があるかどうかで メールアドレスかどうかを判断するにはちょと乱暴かな と思いますよ あとは、ここ if($ad == $fileData)       //$adが$fileDataに含まれれば 構文エラーは出ないはずですが、$fileDataはarrayでは? 実証/検証してないので自身なし

すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.3

ちなみにPHPのマニュアルでは単純な文字検索は主に速さの観点からstrposの使用を推奨しています。戻り値が0の場合があるため型の違いも考慮する「===演算子」を使用することに注意してください。 if(strpos($ad,"@") !== FALSE){ echo "$adに@が含まれています" }

参考URL:
http://jp.php.net/manual/ja/function.strpos.php
すると、全ての回答が全文表示されます。
  • asuncion
  • ベストアンサー率33% (2127/6290)
回答No.2

> $file = fopen("adData.txt", "a");  //データベースを作成 > > fclose($file); fopen()とfclose()の間に、処理は何もないのですか? オープンした直後にクローズすることにどのような意味合いがあるのか、 今一つつかめません。

すると、全ての回答が全文表示されます。

関連するQ&A