За последние 24 часа нас посетили 22311 программистов и 1146 роботов. Сейчас ищут 658 программистов ...

PHP Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead

Тема в разделе "PHP для новичков", создана пользователем kinlok, 13 сен 2020.

  1. kinlok

    kinlok Активный пользователь

    С нами с:
    18 мар 2017
    Сообщения:
    50
    Симпатии:
    0
    PHP:
    1. if($msg) $msg = preg_replace("#@([a-zA-Z_\.0-9]+)*(?:\s+\((?:(.*?)\))?\s*)?#ies", "\compileTag('\\1', '\\2')", $msg);
    памагите решить проблему
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.823
    Симпатии:
    736
    Адрес:
    Татарстан
    Воспользуйтесь переводчиком, если так не понятно. Ну и сделайте соотвующие замены
     
  3. kinlok

    kinlok Активный пользователь

    С нами с:
    18 мар 2017
    Сообщения:
    50
    Симпатии:
    0
    уже давно перевел я проста не допер просто заменить
    preg_replace на preg_replace_callback или предется код подпровлять ищё ?
     
  4. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.823
    Симпатии:
    736
    Адрес:
    Татарстан
    Придется, а как же.
    Посмотрите описание одной функции а потом второй
     
  5. Enclave1089

    Enclave1089 Новичок

    С нами с:
    10 май 2021
    Сообщения:
    3
    Симпатии:
    0
    Здравствуйте! Хочу попросить помощи в правке кода:
    PHP:
    1. if (stristr($this->result, "{lang."))
    2.         {
    3.             $this->result = preg_replace("#\\{lang.(.+?)\\}#ies", "\$lang['\\1']", $this->result);
    4.  
    5.         }
    на preg_replace_callback
     
  6. Enclave1089

    Enclave1089 Новичок

    С нами с:
    10 май 2021
    Сообщения:
    3
    Симпатии:
    0
    Если я правильно начитал, то нужно preg_replace поменяйть на preg_replace_callback и удалить модификатор /e
    Начну городить, если что поправьте пожалуйста.
    PHP:
    1. $this->result = preg_replace_callback("#\\{lang.(.+?)\\}#is",
    2. function($is){return "\$lang['\\1']"}, $this->result);
     
    #6 Enclave1089, 10 май 2021
    Последнее редактирование: 10 май 2021
  7. Enclave1089

    Enclave1089 Новичок

    С нами с:
    10 май 2021
    Сообщения:
    3
    Симпатии:
    0
    PHP:
    1.             $this->result = preg_replace_callback("#\\{lang.(.+?)\\}#is",
    2.             function($is){return $lang['$is[1]'];}, $this->result);
    не знаю что сделал, ошибка не выводится но и на странице часть надписей исчезла)

    а если так:
    PHP:
    1.             $this->result = preg_replace_callback("#\\{lang.(.+?)\\}#is",
    2.             function($is){return "\$lang['$is[1]']";}, $this->result);
    то, то что исчезло, теперь выводится массивами: (

    $lang['text138']

    $lang['text141']
    $lang['text139']
    $lang['text142']
    $lang['text140']
    $lang['text143']
    )
    Знающий если заглянет сюда, просьба поправить.