Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как исправить ошибку Deprecated: preg_replace при добавлении русского комментария к фото?

Как исправить ошибку Deprecated: preg_replace при добавлении русского комментария к фото?


     10.05.2017    preg_replace, ошибка, комментарии, фотоальбомы, русский язык, preg_replace_callback    Общие вопросы по PHP, Модули    229

вопрос
Добрый день!
Столкнулся с проблемой при переезде сайта (dle с php 5.3) на новый хостинг с PHP 5.6.
На сайте установлен модуль "Фотоальбомы 0.10". Сайт на dle 11.3

При добавлении русского комментария к фотографии появляется такая ошибка (но коммент при этом добавляется):
Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/belgutru/public_html/engine/photo/photo_nucleus/functions/default.php on line 365

Вот кусок кода из файла default.php:
365 строка это
$t = preg_replace( '#%u([0-9A-F]{1,4})#ie', "'&#' . hexdec('\\1') . ';'", $t )


function convert_unicode_photo( $t, $to = 'windows-1251' ) {
    $to = strtolower($to);
    if ($to == 'utf-8') {
        $t = preg_replace( '#%u([0-9A-F]{1,4})#ie', "decode_to_utf8_photo(hexdec('\\1'))", utf8_encode($t) );
        $t = urldecode ($t);
    }else{
        $t = preg_replace( '#%u([0-9A-F]{1,4})#ie', "'&#' . hexdec('\\1') . ';'", $t );
        $t = urldecode ($t);
        $t = @html_entity_decode($t, ENT_NOQUOTES, $to);
    }
    return $t;
}


Подскажите пожалуйста как исправить эту ошибку.

Ответа пока нет


4 комментария

MikeTheRaven
Юзер

MikeTheRaven - 11 мая 2017 00:01 -

Переводчиком воспользуйтесь. Текст ошибки содержит ответ на заданный вопрос.

kolumb
Юзер

kolumb - 11 мая 2017 09:03 -

Заменить
preg_replace 
на
preg_replace_callback

nowheremany
Эксперт

nowheremany - 11 мая 2017 16:48 -

preg_replace( '#%u([0-9A-F]{1,4})#ie', "decode_to_utf8_photo(hexdec('\\1'))", utf8_encode($t) );

замените на
preg_replace_callback( '#%u([0-9A-F]{1,4})#ie', function($m){
return decode_to_utf8_photo(hexdec($m[1]));
}, utf8_encode($t) );


preg_replace( '#%u([0-9A-F]{1,4})#ie', "'&#' . hexdec('\\1') . ';'", $t );

замените на
preg_replace_callback( '#%u([0-9A-F]{1,4})#ie', function($m){
return '&#' . hexdec($m[1]) . ';';
}, $t );

Благодарность принимаю тут Связь

osv
Юзер

osv - 15 мая 2017 00:13 -

nowheremany, дружище большое спасибо за ответ, теперь всё работает без ошибок !

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх