Antonchik
@Antonchik
Программирую на HTML

Как исправить ошибку с регуляркой?

Здравствуйте, выдает мне такую ошибку
preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead
вот сама регулярка
preg_replace('/\&\#([0-9]+)\;/me', "((\\1>255)?(utf8_decode(code2utf(\\1))):('&#\\1;'))", $t);
как исправить?
  • Вопрос задан
  • 237 просмотров
Решения вопроса 1
miraage
@miraage
Старый прогер
Используйте preg_replace_callback.
Ваш Капитан.

// EDIT

Как-то так получается.
$in = '...your text...';

// never use "e"
$bad = preg_replace('/\&\#([0-9]+)\;/me', "((\\1>255)?(utf8_decode(code2utf(\\1))):('&#\\1;'))", $in);

// use callback instead
$good = preg_replace_callback(
  '/\&\#([0-9]+)\;/m',
  function ($m) {
    if ($m[1] > 255) {
      return utf8_decode(code2utf($m[1]));
    }
    
    return "&#${m[1]};";
  },
  $in
);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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