Когда мы перешли на php7, внезапно один из плагинов Wordpress начал выдавать эту ошибку:
preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead.
Итак, я начал искать (я не эксперт по php) и пришел с этим переписыванием вызова.
Что-то определенно не так (хотя ошибка исчезла), потому что плагин не выполняет свою работу. Кто-нибудь подскажет? Спасибо
//old
//$rewrite_rules = unserialize( preg_replace ( '!s:(\d+):"(.*?)";!se', "'s:'.strlen('$2').':\"$2\";'" , $rewrite_rules ) );
//new
$rewrite_rules = unserialize( preg_replace_callback( '!s:(\d+):"(.*?)";!s', function($m) { return ("'s:'.strlen('$m[2]').':\"$m[2]\";'");}, $rewrite_rules ) );
("'s:'.strlen('$m[2]').':\"$m[2]\";'");
- person Wiktor Stribiżew   schedule 18.01.2017preg_replace_callback('!s:(\d+):"(.*?)";!s', function($m) { return "'s:'" . strlen($m[2]) . ':"' . $m[2] . '";\'');}, $rewrite_rules )
- person Wiktor Stribiżew   schedule 18.01.2017preg_replace_callback('!s:(\d+):"(.*?)";!s', function($m) { return "'s:'" . strlen($m[2]) . ':"' . $m[2] . '";\'';}, $rewrite_rules )
- person vlad   schedule 18.01.2017function filter_rewrite_rules( $rewrite_rules ) {/* some code*/ $rewrite_rules = unserialize( preg_replace_callback('!s:(\d+):"(.*?)";!s', function($m) { return "'s:'" . strlen($m[2]) . ':"' . $m[2] . '";\'';}, $rewrite_rules ) ); }
- person vlad   schedule 18.01.2017preg_replace_callback(): Requires argument 2, 'UtilString::rewrite_callback', to be a valid callback
, которое определенно бьет меня - person vlad   schedule 18.01.2017'rewrite_callback'
в качестве аргумента обратного вызова? Пожалуйста, попробуйте тот, что ниже. Было бы намного проще, если бы вы могли предоставить минимальный полный проверяемый пример (MCVE). - person Wiktor Stribiżew   schedule 18.01.2017