Я изменяю один из наших шаблонов 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;
}
@Fky: Да, я уже видел этот пост, не понимал, как изменить этот код в соответствии с моей функцией. Я новичок в Joomla, и мой код не возвращается, как в сообщении. Тем не менее, я пытаюсь использовать этот патч кода. Вот что у меня есть: pastebin.com/6synrNuT. Любые идеи?






Наконец, этот код сработал:
$text = preg_replace_callback('/('.$replace2.')/',create_function('$replace','return @replace;'),$text);
Спасибо вам всем.
Блок кода в вашем вопросе и в вашем ответе выглядит действительно неоптимально. Предоставьте один или два образца входных строк и желаемый результат для каждой. Я уверен, что смогу в значительной степени очистить ваш процесс.
используйте
preg_replace_callbackвместо этого, как это объясняется в этом посте: stackoverflow.com/questions/16986331/…