• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:クーロンであるファイル名に特定文字列があるかをチェックする)

クーロンでファイル名に特定文字列があるかをチェック | メール送信スクリプト

このQ&Aのポイント
  • クーロンを使用して特定ディレクトリ内のファイルをチェックし、特定の文字列が含まれるかどうかを検索するスクリプトを作成したい場合、この記事は参考になります。
  • 特定ディレクトリ内のファイルをループして、正規表現を使用してファイル名に特定の文字列が含まれるかどうかを確認し、特定文字列が含まれるファイルがあれば、指定したメールアドレスにメールを送信するスクリプトを作成したい場合は、以下のコードをご参考ください。
  • クーロンを使用して特定ディレクトリ内のファイルをチェックし、特定の文字列が含まれるかどうかを検索し、含まれるファイルがあればメールを送信するスクリプトを作成する方法について説明します。以下のコード例をご参考ください。

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

  • ベストアンサー
回答No.3

#2です 色々問題のあるスクリプトを書いてしまいました^^; すみません、訂正です。 <?php $message=""; if ($dir = opendir("./")) { while (($file = readdir($dir)) !== FALSE) { if(strpos($file,".aaa") !== FALSE && strpos($file,"cccc") !== FALSE) { $message.="{$file} exists.\n"; } } closedir($dir); } $message = wordwrap($message,70); mail("xxx@mmm.com","My Subject",$message); ?>

wf3255
質問者

お礼

ご回答感謝いたします。 From ヘッダを追加し、希望どおりの動きが出来ました。 ありがとうございます。

その他の回答 (2)

回答No.2

どのようなメールを送りたいのかによりますが、 英文だけの文字を送りたいのであればmail()関数で以下のようにします。 $message = "{$file} exists."; $message = wordwrap($message,70); mail("xxx@mmm.com","My Subject",{$message}); ただ、これだけでは複数ファイルが存在する場合には沢山送られてしまいますので、以下のようにします。 <?PHP $message=""; if ($dir = opendir("./")) { while (($file = readdir($dir)) !== false) { if(preg_match("/.aaa/",$file)) { if(preg_match("/cccc/",$file)) { $message.="{$file} exists.\n"; } } } closedir($dir); } $message = wordwrap($message,70); mail("xxx@mmm.com","My Subject",{$message}); ?> なお、日本語を含んだメッセージを送信したい場合は、 mail()の代わりに、mb_send_mail()を使用します。 その際、mb_language()でエンコードに使用する言語を設定します。 mb_language("Japanese"); mb_internal_encoding("sjis"); mb_send_mail("xxx@mmm.com","My Subject",{$message}); http://jp.php.net/manual/ja/function.mail.php http://jp.php.net/manual/ja/function.mb-send-mail.php p.s. あまりmail関数は使ってないので自信はありません; 間違っていたらどなたか説明をお願い致します^^;

回答No.1

. (ドット)は、正規表現では\n以外の1つの任意文字を表すため、 \.とする必要があります。 <?PHP if ($dir = opendir("./")) { while (($file = readdir($dir)) !== false) { if(preg_match("/\.aaa/",$file)) { if(preg_match("/cccc/",$file)) { ☆☆☆ } } } closedir($dir); } ?> ただ、これだけのマッチングであれば正規表現は使わずに strposでチェックする方が望ましいです。 if ($dir = opendir("./")) { while (($file = readdir($dir)) !== false) { if(strpos($file,".aaa")!==FALSE && strpos($file,"cccc")!==FALSE) { ☆☆☆ } } closedir($dir); }

wf3255
質問者

補足

ご回答感謝いたします。 strposでチェックする方法でいきたいと思います。 私の質問内容に不備があり申し訳ございません。 ☆☆☆に入る関数がわからないのですがご教授いただけますでしょうか?

関連するQ&A