Я пытаюсь добавить имена файлов с номерами телефонов в массиве. Мои тестовые файлы:php regex для извлечения телефонных номеров из имен файлов
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] ' равно '\ d' в' PCRE'. – Jan
Попробуйте '$ regex ="/(?