目的
php で下記の条件で判定を行いたい時がありました。
- ファイル名で拡張子が jpg, jpeg, gif, png
- .で始まらない
explode を使って配列にしてファイル名を文字列比較してたのですが、正規表現だともっと簡単に出来そうなので正規表現でやってみました。
正規表現でやってみる
<?php
$files = [
'test.jpg',
'test.jpeg',
'222test.gif',
'333test.png',
'.test.jpg'
];
foreach ($files as $v) {
echo $v . "\n";
if (preg_match("/^[^\.]+\.(jpe?g|gif|png)$/", $v)) {
echo "A match was found.";
} else {
echo "A match was not found.";
}
echo "\n\n";
}
実行結果
test.jpg
A match was found.
test.jpeg
A match was found.
222test.gif
A match was found.
333test.png
A match was found.
.test.jpg
A match was not found.
今回使用した正規表現パターンについて
| | | |-|— | |^ |行頭 | |$ |行末 | |[^abc] |a、b、c以外の1文字 | |+ |1回以上の繰り返し | |? |0回または1回の出現 |