将 preg_replace 转换为 preg_replace_callback 修饰符错误
convert preg_replace to preg_replace_callback modifier error
我有这个代码:
$key = preg_replace(
'/(^|[a-z])([A-Z])/e',
'strtolower(strlen("\1") ? "\1_\2" : "\2")',
substr($method, 3)
);
我收到 php 警告(php 5.6),我尝试将其转换为 preg_replace_callback:
$key = preg_replace_callback(
'/(^|[a-z])([A-Z])/e',
function($m) {
return strtolower(strlen("\{$m[1]}") ? "\{$m[1]}_{$m[2]}" : "\{$m[2]}");
},
substr($method, 3)
);
但我收到此错误:
Modifier /e cannot be used with replacement callback
有人可以帮我转换吗?
谢谢
正如评论中所说,删除 e
修饰符,我也认为你不需要大括号。
您的代码变为:
$key = preg_replace_callback(
'/(^|[a-z])([A-Z])/',
function($m) {
return strtolower(strlen($m[1]) ? "$m[1]_$m[2]" : $m[2]);
},
substr($method, 3)
);
我有这个代码:
$key = preg_replace(
'/(^|[a-z])([A-Z])/e',
'strtolower(strlen("\1") ? "\1_\2" : "\2")',
substr($method, 3)
);
我收到 php 警告(php 5.6),我尝试将其转换为 preg_replace_callback:
$key = preg_replace_callback(
'/(^|[a-z])([A-Z])/e',
function($m) {
return strtolower(strlen("\{$m[1]}") ? "\{$m[1]}_{$m[2]}" : "\{$m[2]}");
},
substr($method, 3)
);
但我收到此错误:
Modifier /e cannot be used with replacement callback
有人可以帮我转换吗?
谢谢
正如评论中所说,删除 e
修饰符,我也认为你不需要大括号。
您的代码变为:
$key = preg_replace_callback(
'/(^|[a-z])([A-Z])/',
function($m) {
return strtolower(strlen($m[1]) ? "$m[1]_$m[2]" : $m[2]);
},
substr($method, 3)
);