Замена preg_replace на preg_replace_callback дает мне предупреждение

Это мой код

private function _checkMatch($modFilePath, $checkFilePath) {
$modFilePath = str_replace('\\', '/', $modFilePath);
$checkFilePath = str_replace('\\', '/', $checkFilePath);

$modFilePath = preg_replace('/([^*]+)/e', 'preg_quote("$1", "~")', $modFilePath);
$modFilePath = str_replace('*', '[^/]*', $modFilePath);
$return = (bool) preg_match('~^' . $modFilePath . '$~', $checkFilePath);
return $return;
}

Я изменил preg_replace на preg_replace_callback, но это дает мне следующую ошибку.

Warning: preg_replace_callback(): Requires argument 2, 'preg_quote("$1", "~")', to be a valid callback

В настоящее время я использую OpenCart версии 1.x.x

Кто-нибудь может мне помочь?

2

Решение

http://php.net/manual/en/function.preg-replace-callback.php

Вы должны использовать действительный обратный вызов в качестве второго аргумента. Вы можете использовать функцию или ее имя в виде строки:

$modFilePath = preg_replace_callback('/[^*]+/', function ($matches){
return preg_quote($matches[0], "~");
}, $modFilePath);

Я удалил незащищенный e модификатор и заменил его на действительный обратный вызов для preg_replace_callback функция.

Также со старой версией PHP вам нужно добавить оператор функции ниже вашего кода

function myCallback($matches){
return preg_quote($matches[0], "~");
}

А потом использовать preg_replace_callback('/[^*]+/', 'myCallback', $modFilePath);

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]