[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Обработка регулярных выражений в функции
Изучающий
Доброго времени суток.


Вопрос появился, помогите, пожалуйста.

Использую функцию:
$num = file("/tmp/$number_data_time.new", FILE_IGNORE_NEW_LINES)

Вот в чём проблема - файл имеет имя формата IPадрес_датасоздания_времясоздания.new. IP-адрес берётся из БД. Пример файла - 10.10.10.10_20101221_1702.new . В каталоге лежат разные файлы, в там числе и без метки new.

Задача состоит в том, что б открывать все файлы с меткой new, не зависимо от даты и время создания.

Так вот - как мне записать регулярные выражения в эту функцию, да ещё и учесть нижние подчёркивания? Или есть какой-то другой способ решения задачи?



Спустя 30 минут, 20 секунд (21.12.2010 - 17:30) hellmin написал(а):
Если я правильно понял, то это что-то из такого...
$dir = "название директории";

if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
if(preg_match('/.+new$/', $file, $matches))
echo $file;
}
closedir($dh);
}
}

Спустя 23 часа, 26 минут, 19 секунд (22.12.2010 - 16:56) Изучающий написал(а):
Спасибо за ответ, но появился ещё один.

Как можно записать переменную без точного значения, то есть в которой находились бы любые цифры:

$calendar = "/[0-9]{0,8}" - такое не прокатывает...

В перле, например, это можно записать так $calendar = ~[0-9]{0,8} - а в php возможно такое?

Спустя 19 минут, 12 секунд (22.12.2010 - 17:15) hellmin написал(а):
\d и [0-9] - цифры
* - ноль и более вхождений
+ - одно и более вхождений
т.е. /[0-9]+/ или /[0-9]*/
{0,8} это диапазон(количество повторений от 0 до 8)
{5} количество повторений 5
т.е. /[0-9]{0,8}/ или /\d{0,8}/

Спустя 28 секунд (22.12.2010 - 17:16) elliot написал(а):
Все это делается короче - 1-ой функцией (http://php.net/manual/en/function.glob.php):

$dir = "название директории";

foreach (glob($dir . "/*.new") as $filename) {
// $filename - полный путь к файлу
}



В случае, если в директории несколько лямов файлов, лучше пользовать вариантом предложенным hellmin.

Спустя 22 минуты, 32 секунды (22.12.2010 - 17:38) Guest написал(а):
спасибо за ответы, но я спросил немного другое во втором вопросе (простой синтаксис регулярных выражений я знаю)))) - можно ли записать в php переменную без точного её значения. То есть, например - $str будет состоять из любых чисел, без точного значения....

P/S/ если вопрос тупой, то прошу прощения - с php имею дело редко и мало, зато с интересными задачами...



Спустя 2 часа, 48 минут, 22 секунды (22.12.2010 - 20:27) elliot написал(а):
Если я правильно понял, ты имеешь ввиду присвоить переменной маску?

$calendar = "~[0-9]{0,8}~"; // равноценно "~\d{0,8}~"

Дальше эту переменную можешь использовать в функциях работы с регулярками. Например:

if(preg_match($calendar, $file, $matches)) {
echo $file;
}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.