preg_replace_callback

Здравствуйте.
Знаю что делается довольно просто, скорее всего все с помощью preg_replace_callback, но тем не менее, пытаюсь разобраться.
Что нужно: в определенном файле на сервере (например, в файле 1.txt) среди всего текста происходит поиск выражения (по формату даты), например «любые_символы_ДАТА_любые символы».
Формат самой даты такой: 161123
После того как это выражение найдено в этом файле — в нем и именно в этом выражении происходит замена данных, а именно на сегодняшнюю актуальную дату в таком же формате: 171123
В итоге получается, что был разного рода текст, среди которого было выражение «любые_символы_161123_любые символы»,
и стало так: все прежнее осталось, кроме выражения «любые_символы_161123_любые символы», которое было заменено на «любые_символы_171123_любые символы»

 

В чём вопрос? У тебя в тексте только повествовательное наклонение. :)

На всякий случай: заменить конкретный фрагмент текста на другой можно, например, функцией str_replace()
Всегда начинай с официальной справки: https://php.net/str_replace

 

Вот такое решение нашлось:

PHP:
  1. <?php
  2. $data_to_write = «abc»;
  3. $file_path = «public_html/1.txt»;
  4. $file_handle = fopen($file_path, ‘w’);
  5. fwrite($file_handle, $data_to_write);
  6. fclose($file_handle);
  7. ?>
  8. <?php
  9. $data_to_write = date(‘dmy’);
  10. $file_path = «public_html/1.txt»;
  11. $file_handle = fopen($file_path, ‘a’);
  12. fwrite($file_handle, $data_to_write);
  13. fclose($file_handle);
  14. ?>
  15. <?php
  16. $data_to_write = «xyz» . $_POST[‘subject’];
  17. $file_path = «public_html/1.txt»;
  18. $file_handle = fopen($file_path, ‘a’);
  19. fwrite($file_handle, $data_to_write);
  20. fclose($file_handle);
  21. ?>
 

@Emiles пожалуйста оформляй код в ббкоды [ code ] или [ php ]. один раз я сделал это за тебя, видишь насколько стало лучше?!

 

Добрый день!

В начале Вы опубликовали сообщение «preg_replace_callback» о том, что в тексте необходимо заменить
«любые_символы_ДАТА_любые символы»
Видимо, в нём под «Формат самой даты такой: 161123» подразумевается пример даты в формате «dmy»

Затем Вы показали решение, которое нашлось.
Однако, Ваш скрипт просто записывает файл с текстом и текущей датой.
Уточните, пожалуйста, есть ли у Вас вопросы по этой теме.

Удачи!

 

В решении, которое нашлось — результат в итоге выглядит так:
abc»текущая дата»xyz — это подходит для решения задачи.
Вместо замены текста внутри создается текст по новой с его постоянным содержимым, но только дата внутри этого текста меняется на актуальную.
Добавлено все это в cron, поэтому «текущая дата» внутри обновляется при необходимости (после запуска cron).
Данная задача решена, спасибо.
— Добавлено —

Вижу, ок, хорошо.
Спасибо)

 

Интересное решение. Вы запускаете скрипт из cron и в нём записываете в файл abc»текущая дата»xyz
Затем вызывается скрипт, который читает этот файл.
Почему нельзя обойтись без чтения файла, а просто создать в этом скрипте строку?

PHP:
  1. $str = «abc».date(«dmy»).«xyz» ;
 

Да, и так тоже было. Так даже проще, спасибо.
Изначально была задумка разделить процессы, так как там массивы неизменных текстов довольно большие, поэтому было так оформлено для наглядности.
В итоге оставлено так:

PHP:
  1. <?php
  2. $str = «abc».date(«dmy»).«xyz» ;
  3. $file_path = «public_html/1.txt»;
  4. $file_handle = fopen($file_path, ‘w’);
  5. fwrite($file_handle, $str);
  6. fclose($file_handle);
  7. ?>

Или вы про то, что можно еще оптимизировать код?

 

 

Подозреваю, что CRON тут не нужен.
На входе у Вас один длинный текст, к нему добавляется текущая дата и после неё добавляется другой длинный текст.
Эти тексты постоянные и меняется только дата?
Что происходит дальше с этой строкой и где она обрабатывается?
Если не секрет, напишите немного подробнее про Ваши процессы.
Может быть тогда удасться оптмизировать код

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *