ファイル名に配列の電話番号を追加しようとしています。 私のテストファイルは以下のとおりです。ファイル名から電話番号を抽出するためのPHP正規表現
dsfdsf543-6786sdfsdfd.jpg
543-6786sdfsdfd.jpg
435-3454
dsfdsf543-6786.jpg
123-4567
543-6786.jpg
345-3454
私の目標は、別の電話番号は、配列内の要素の別の行を持つことになりますです。配列行の各要素は同じ電話番号を持ちます。たとえば :
543-6786 dsfdsf543-6786sdfsdfd.jpg 543-6786sdfsdfd.jpg dsfdsf543-6786.jpg 543-6786.jpg
435-3454
123-4567
345-3454
マイコード:
$directory = $_SERVER['DOCUMENT_ROOT'];
$handler = opendir($directory);
while ($file = readdir($handler)) {
if ($file != "." && $file != "..") {
$regex = "/[\D]*[0-9]{3}-[0-9]{4}[\D]*/";
preg_match_all($regex, $file, $results);
}
}
print_r ($results);
結果は
Array ([0] => Array ([0] => 345-3454))
配列で、なぜ唯一のファイル名ですか? 私のミスはどこですか? ありがとうございます!
解決策ではなくヒントです。式は '〜\ D * \ d {3} - \ d {4} \ D *〜'に簡略化できます。文字クラスに '\ D'を入れる必要はなく、' [0-9] ' 'PCRE'の' \ d'と同じです。 – Jan
'$ regex =" /(?<!\ d)[0-9] {3} - [0-9] {4}(?!\ d)/ ";' –