用 preg_replace_callback 替换 preg_replace 给我一个警告
Replacing preg_replace by preg_replace_callback is giving me a warning
这是我的代码。
private function _checkMatch($modFilePath, $checkFilePath) {
$modFilePath = str_replace('\', '/', $modFilePath);
$checkFilePath = str_replace('\', '/', $checkFilePath);
$modFilePath = preg_replace('/([^*]+)/e', 'preg_quote("", "~")', $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("", "~")', to be a valid callback
我目前使用的是opencart版本1.x.x
谁能帮帮我?
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);
这是我的代码。
private function _checkMatch($modFilePath, $checkFilePath) {
$modFilePath = str_replace('\', '/', $modFilePath);
$checkFilePath = str_replace('\', '/', $checkFilePath);
$modFilePath = preg_replace('/([^*]+)/e', 'preg_quote("", "~")', $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("", "~")', to be a valid callback
我目前使用的是opencart版本1.x.x
谁能帮帮我?
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);