• ベストアンサー

preg_match関数で正規表現の複数指定方法。

./aaaディレクトリ内においてファイル名に、『bbbb』及び『cccc』と言う文字列が含まれるファイルを./eeeディレクトリに移動させるスクリプトを考えております。 以下は『bbbb』のみを拾うようなスクリプトです。 ========= <?PHP if ($dir = opendir("./aaa")) { while (($file = readdir($dir)) !== false) { if(preg_match("/bbbb/",$file)) rename("./aaa/".$file,"./eee/".$file); } closedir($dir); } ?> ========= 上記は前にこちらで質問させていただき、正常に動くことを確認しております。 今回は『bbbb』及び『cccc』が含まれる場合に./eeeディレクトリに移動させることを考えております。 このような場合は『cccc』はどのよう記載すればよいのでしょうか?ご教授の程よろしくお願いいたします。

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

  • ベストアンサー
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.3

どちらとも含まれる場合と言う意味ですよね? 単に preg_match をもう一回やればいいのではないかと。 if(preg_match("/bbbb/",$file)) { if(preg_match("/cccc/",$file)) { rename("./aaa/".$file,"./eee/".$file); } }

wf3255
質問者

お礼

ご回答ありがとうございます。 解決できました。ホントに助かりました。ありがとうございます。

その他の回答 (2)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

#1さんの回答を見て疑問に思ったのですが、 「bbb及びcccc」が含まれる場合というのは、bbbbとccccがともに 含まれている場合、あるいはいずれかが含まれている場合。 どちらでしょうか? わたしは前者ではないかととったのですが。

wf3255
質問者

お礼

早急な補足要求ありがとうございます。 補足が遅れてしまい申し訳ございません。 #3様の回答で上手く動きましたが、“bbbbとccccがともに 含まれている場合”の部分をご指摘くださいましてありがとうございました。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

ご自身で正規表現について学習なさることをオススメします。 とりあえずは preg_match("/bbbb|cccc/",$file)

wf3255
質問者

お礼

ご回答ありがとうございます。 結果としては#3様の回答で上手く動きましたが、 正規表現について少しだけ知識がつきました。 ありがとうございます。

関連するQ&A