Скрипт поиска замены php

StrikeOFF

♥kan inte lyfta utan lift♥
Регистрация
20 Мар 2010
Сообщения
372
Реакции
204
Помогите скрипт сделать
PHP:
в файле ткст.тхт
Находим все 2012-04-19 18:00:00
04 делаеем переменной $var1
19 делаеем переменной $var2
$var2 присваиваем значение $var2+1
    если $var2 становиться больше 30(это числа месяца, незнаю как правильно обиграть чтобы дни не пропадали)
{ присваиваем $var2 значение 01
  присваиваем $var1 значение $var1+1}
заменяем 2012-04-19 18:00:00 на '2012-'.'$var1'.'-'.'$var2'.' 18:00:01';
ищем следующий
        2012-04-19 18:00:00 повторяем функцию выше пока предмет поиска не исчезнет
 
регулярки. Хотя я думаю задача стоит чтобы не просто 1 день и 1 секунду прибавить, можно сделать любую дату. Но раз ТЗ есть
PHP:
function replaceDate($m){
 
$time = @mktime( (int)$m[4], (int)$m[5],(int)$m[6], (int)$m[2],(int)$m[3],(int)$m[1]);
// теперь мы можен генерировать любую дату. Напр прибавить не просто 1 день и 1 час а вообще случайное число
// но пусть это будет 1 день и 1 секунда
$time += 60*60*24 + 1;
 
return date("Y-m-d H:i:s", $time);
 
}
echo preg_replace_callback('~(\d{4})-(\d{2})-(\d{2}) (\d{2}:((\d{2}:((\d{2})~', 'replaceDate', $e);
 
Я нижнюю подправил до такого вида, ато при компиляции ошибку выдавало. Но все же я не приложу ума как его использовать.:oops:
PHP:
echo preg_replace_callback('~(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})~', 'replaceDate', $e);
Я просто парсером привожу документ в вид когда остаеть пройтись и изменить одну переменную, что бы раз в день(но естественно лучше в определённый период) Джумла постила новость.
 
нижнюю подправил до такого вида, ато при компиляции ошибку выдавало
да, я вначале запостил без тегов кода и он скобки попортил)

Но все же я не приложу ума как его использовать.

вместо $e ты передаёшь содержимое файла. к примеру
$new_content = preg_replace_callback('~(\d{4})-(\d{2})-(\d{2}) (\d{2}:((\d{2}:((\d{2})~', 'replaceDate', file_get_contents('txtfile.txt'));
$new_content - это уже с изменёнными датами текст
 
PHP:
<?php
 
$file = file('txtfile.txt');
$sitename = 'http://mainpage.com';
 
function when_find($matches)
  {
    return $matches[1].($matches[2]+1);
  }
preg_replace_callback(
    '/$file/',
    "when_find",
    $sitename);
 
?>

Есть папка с разными файлами. Корень сайта. Нужно чтобы скрипт брал из txtfile.txt строки и производил поиск по всей папке(она в один уровень) Если находит совпадение - меняет на $sitename. Я тут написал кое-что. оно компилиться но я не делает что я хочу, тут по идее еще надо указать ему правильно на папку и может быть я первую переменную в preg_replace_callback не так задал..
 
PHP:
'/$file/'
Этот кусок на мысли не наводит?
 
Чем его заставить искать в нужной мне папке по всем файлам?
Наводит не то что я ищу "$file"
 
Зачем экранируете?
 
PHP:
<?php
 
$file = file('txtfile.txt');
$sitename = "http://mainpage.com";
 
function when_find($matches)
  {
    return $matches[1].($matches[2]+1);
  }
preg_replace_callback(
    $file,
    "when_find",
    $sitename);
 
?>
Ну ясно, я убрал экран, но ловлю ошибку
Warning: preg_replace_callback() [Для просмотра ссылки Войди или Зарегистрируйся]: Delimiter must not be alphanumeric or backslash in \home\site.ru\www\index.php on line 13
Я так понимаю что его не устраивают разделители в файле txtfile.txt
Попробовал добавить \n в конец строк в файле, не помогло.
 
Вообще почитай документацию.
PHP:
preg_replace_callback(
    "/".$file."/",
    "when_find",
    $sitename);
 
Назад
Сверху