|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.01.2018, 18:41 | #1 |
Регистрация: 15.07.2011
Сообщений: 4
|
preg_replace_callback - или убить сайт на корню!!!
Привет всем трудягам!
У меня сайт на DLE-9.6. Сверстал его как-то пару-тройку лет назад. На момент его создания, конфигурация была следующая: PHP-5.3 с Apache 2.2, mysql 5.5 Нужно было поднять версию с PHP-5.3 на PHP-5.6, однако мне удалось это сделать, несмотря, на то, что я в коде мало чего понимаю. Мне удалось изменить пару проблем связанных с модификатором (е) относящихся к подключаемым модулями. Это, конечно же, было кратковременное чудо, хотя и дебаггер заметно перестал материться и количество строк заметно сократилось. Увы, последствия поднятия версии PHP оборачиваются требованиями замены устаревшей функции, что сказывается на самочувствии и работе не только моего сайта. Однако, передо мной теперь стоит вот такая строчка, которая требует заменить устаревшую функцию preg_replace на еще более непонятную для меня современную preg_replace_callback. Полагаю, сия задача по плечу, разве что, опытному программисту, меня же сюда привело лишь отчаяние. Вот этот код: $this->copy_template = preg_replace( "#\\{include file=['\"](.+?)['\"]\\}#ies", "\$this->load_file('\\1', 'php')", $this->copy_template ); } А матершинная строка така: Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in C:\OpenServer\domains\iisusse-news.com\engine\classes\templates.c lass.php on line 319 Я так понимаю, здесь речь идет о том, каков должен быть код строчки подключения модулей в основном шаблоне сайта. Я решил, не будучи программистом, написать нечто эпичное - не судите строго!)): (тут наверху есть кое-какие строки кода, но мне предлагается решить ребус именно с нижеследующим кодом, то бишь, со строкой 319) $this->copy_template = preg_replace( "#\\{include file=['\"](.+?)['\"]\\}#ies", function($matches){ return $this->load_file($matches[1],$matches[php]); }, $this->copy_template); } Кто может подсказать как правильно написать этот замысловатый кодец? Кажись, здесь все правильно, но вот кусочек кода $matches[php] - в корне неверен, ибо главная страничка перестает работать. Она даже не загружается (( И как с этим справиться? Последний раз редактировалось Bekss; 09.01.2018 в 19:42. |
09.01.2018, 20:42 | #2 |
Пользователь
Регистрация: 05.11.2017
Сообщений: 59
|
А если удалить е из ies ?
Код:
|
09.01.2018, 22:09 | #3 |
Регистрация: 15.07.2011
Сообщений: 4
|
После удаления модификатора "е" строка с матюком пропадает, но вылезает тройка багов в шаблоне связанных со строкой подключения модуля статистики, комментариев и ...
Лезет строка: $this->load_file('engine/modules/online/online.php', 'php') $this->load_file('engine/modules/icomm.php?max_comm=6', 'php') $this->load_file('engine/modules/catface.php', 'php') Они у меня в шаблоне непосредственно подключаются следующим способом: <!-- 20 начало БЛОКА Статистики --> {include file="STATISTIC_my_kaile.tpl"} <!-- конец БЛОКА Статистики --> <!-- 11 НАЧАЛО Последние комментарии iComm для DLE 9.6-10.0 --> {include file="icomm_2013_fixed_2_my_kaile.t pl"} <!-- КОНЕЦ комментарии iComm для DLE 9.6-10.0 --> Третий немного по другому подключается.... Но все всегда исправно работало, пока версию PHP не поднял! Я конечно могу ошибаться, но изучив вопрос связанный с подменой устаревшей функции, я так понял, что удалением самого модификатора "е" тут дело, увы, не ограничится(( Похоже, от нас требуется серьезные познания с регулярными выражениями. Поднял апачч до версии 2.4+ngnix 1.9, потом PHP до версии 5.6, а тут несколько строк отделяют от успеха. Увы, сейчас собираю сайт на локалке, поэтому не могу продемонстрировать всю полноту картины. Свет отключали у нас, поэтому был не в состоянии своевременно ответить. Спасибо за поддержку. Последний раз редактировалось Bekss; 09.01.2018 в 22:12. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Гиперсылка на сайт в RadStudio 10.1 на С++(разработка под Андроид): Как сделать чтобы по нажатию на лейбл или кнопку открывался сайт по гиперссылке? | VladislavSito | Помощь студентам | 0 | 07.03.2017 22:53 |
Как убить неубиваемый процесс в Delphi? по pid или совсем уничтожить файл или процесс | justprogrammer | Общие вопросы Delphi | 2 | 14.08.2016 11:15 |
1C8 или Сайт | Jack_shade | PHP | 9 | 14.08.2014 10:28 |
Нужна программа или сайт | pikasevich | Фриланс | 6 | 10.09.2013 15:45 |