preg_replace на preg_replace_callback (e модификатор в php 7)

Wertos

Пьянь местная
Регистрация
13 Апр 2007
Сообщения
178
Реакции
39
PHP:
$t = str_replace(array("\t", "\r", "\n", ' '), '', preg_replace('/"(?>(`.|[^"])*)"/sme', 'substr(str_replace(array(";", "|", "~", " ", ",", "/", "(", ")", \'`"\'), array("\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\""), "$0"), 1, -1)', trim($t)));
Подскажите как заменить на preg_replace_callback в данном коде ? Спасибо.
 

zabolots

Постоялец
Регистрация
11 Сен 2012
Сообщения
54
Реакции
22
По идее вам preg_replace нужно поменять на preg_replace_callback и убрать флаг e, то есть вместо /sme указать только /sm
 

Wertos

Пьянь местная
Регистрация
13 Апр 2007
Сообщения
178
Реакции
39
По идее вам preg_replace нужно поменять на preg_replace_callback и убрать флаг e, то есть вместо /sme указать только /sm
Код:
Warning: preg_replace_callback(): Requires argument 2, 'substr(str_replace(array(";", "|", "~", " ", ",", "/", "(", ")", '`"'), array("\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\""), "$0"), 1, -1)', to be a valid callback
 

lag

Мой дом здесь!
Регистрация
13 Окт 2014
Сообщения
290
Реакции
366
PHP:
$t = str_replace(
    ["\t", "\r", "\n", ' '],
    '',
    preg_replace_callback(
        '/"((?:`.|[^"])*+)"/s',
        function ($m) {
            return str_replace(
                    ["'", ";", "|", "~", " ", ",", "/", "(", ")", '`"'],
                    ["\\'", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\""],
                    $m[1]
            );
        },
        trim($t)
    )
);
 

Wertos

Пьянь местная
Регистрация
13 Апр 2007
Сообщения
178
Реакции
39
Сверху