Jooml: preg_replace устарел

Я изменяю один из наших шаблонов Joomla и получаю это предупреждение.

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/folder/public_html/components/com_joomgallery/helpers/helper.php on line 255

Код такой:

  $text     = preg_replace('/('.$replace2.')/ie', $replace, $text);

Весь блок кода:

 public static function createPagetitle($text, $catname = '', $imgtitle = '', $page_title = '')
  {
    preg_match_all('/(\[\!.*?\!\])/i', $text, $results);
    define('COM_JOOMGALLERY_COMMON_CATEGORY', JText::_('COM_JOOMGALLERY_COMMON_CATEGORY'));
    define('COM_JOOMGALLERY_COMMON_IMAGE', JText::_('COM_JOOMGALLERY_COMMON_IMAGE'));
    for($i = 0; $i<count($results[0]); $i++)
    {
      $replace  = str_replace('[!', '', $results[0][$i]);
      $replace  = str_replace('!]', '', $replace);
      $replace  = trim($replace);
      $replace2 = str_replace('[!', '\[\!', $results[0][$i]);
      $replace2 = str_replace('!]', '\!\]', $replace2);
      $text     = preg_replace('/('.$replace2.')/ie', $replace, $text);
    }
    $text = str_replace('#cat', $catname, $text);
    $text = str_replace('#img', $imgtitle, $text);
    $text = str_replace('#page_title', $page_title, $text);

    $text = self::addSitenameToPagetitle($text);

    return $text;
  }

используйте preg_replace_callback вместо этого, как это объясняется в этом посте: stackoverflow.com/questions/16986331/…

Fky 29.05.2018 09:58

@Fky: Да, я уже видел этот пост, не понимал, как изменить этот код в соответствии с моей функцией. Я новичок в Joomla, и мой код не возвращается, как в сообщении. Тем не менее, я пытаюсь использовать этот патч кода. Вот что у меня есть: pastebin.com/6synrNuT. Любые идеи?

We are Borg 29.05.2018 10:04
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
142
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Наконец, этот код сработал:

  $text = preg_replace_callback('/('.$replace2.')/',create_function('$replace','return @replace;'),$text);

Спасибо вам всем.

Блок кода в вашем вопросе и в вашем ответе выглядит действительно неоптимально. Предоставьте один или два образца входных строк и желаемый результат для каждой. Я уверен, что смогу в значительной степени очистить ваш процесс.

mickmackusa 29.06.2018 02:05

Другие вопросы по теме