アプリ版:「スタンプのみでお礼する」機能のリリースについて

あるディレクトリ内(./)のファイルをチェックし、特定の文字列(".aaa"と"cccc"の両方)があるかをチェックし、その特定の文字列が含まれるファイルがあればあるメールアドレス宛(xxx@mmm.com)にメールを送信するスクリプトを考えています。下記スクリプトの☆☆☆のところにその関数が入ると思うのですが、自力では解決不能なためご教授願います。

<?PHP
if ($dir = opendir("./")) {
while (($file = readdir($dir)) !== false) {
if(preg_match("/.aaa/",$file)) {
if(preg_match("/cccc/",$file)) {
☆☆☆
}
}
}
closedir($dir);
}
?>

A 回答 (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);

?>
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/09/25 12:51

どのようなメールを送りたいのかによりますが、


英文だけの文字を送りたいのであれば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-mai …

p.s.
あまりmail関数は使ってないので自信はありません;
間違っていたらどなたか説明をお願い致します^^;
    • good
    • 0

. (ドット)は、正規表現では\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);
}

この回答への補足

ご回答感謝いたします。
strposでチェックする方法でいきたいと思います。

私の質問内容に不備があり申し訳ございません。
☆☆☆に入る関数がわからないのですがご教授いただけますでしょうか?

補足日時:2006/09/25 09:40
    • good
    • 0

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