我想添加電話號碼在數組中的文件名。 我的測試文件是: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)/」;' –