local.ERROR preg_replace() Unknown modifier ‘�’ {exception[object] (ErrorException(code 0) preg_replace() Unknown modifier ‘�’
1、报错:[2024-09-28 02:59:09] local.ERROR: preg_replace(): Unknown modifier ‘�’ {“exception”:”[object] (ErrorException(code: 0): preg_replace(): Unknown modifier ‘�’ at )
[stacktrace]。如图1
foreach ($otherPatterns as $otherPattern) {
if ($originalDescription == $description) {
Log::info(
'$description2 0 订单客户信息',
[
'$description' => $description,
'$startPattern' => $startPattern,
'$pattern' => $pattern,
'$otherPattern' => $otherPattern,
$this->action_id
]
);
$description = preg_replace('/(' . preg_quote($startPattern) . ')[\s\S]*' . preg_quote($pattern) . '[\s\S]*(,' . preg_quote($otherPattern) . ')/', '$1***' . $pattern . '***,' . $otherPattern, $description);
}
}
3、查看打印出的日志信息
[2024-09-28 03:18:50] local.INFO: [module/order]:$description2 0 订单客户信息 {"$description":"邮寄地址由邮寄地址200变更为邮寄地址2005","$startPattern":"客户姓名由","$pattern":"变更为","$otherPattern":"联系邮箱由","0":2}
[2024-09-28 03:18:50] local.INFO: [module/order]:$description2 0 订单客户信息 {"$description":"邮寄地址由邮寄地址200变更为邮寄地址2005","$startPattern":"客户姓名由","$pattern":"变更为","$otherPattern":"联系电话由","0":2}
[2024-09-28 03:18:50] local.INFO: [module/order]:$description2 0 订单客户信息 {"$description":"邮寄地址由邮寄地址200变更为邮寄地址2005","$startPattern":"客户姓名由","$pattern":"变更为","$otherPattern":"所属国家由","0":2}
[2024-09-28 03:18:50] local.INFO: [module/order]:$description2 0 订单客户信息 {"$description":"邮寄地址由邮寄地址200变更为邮寄地址2005","$startPattern":"客户姓名由","$pattern":"变更为","$otherPattern":"省/州由","0":2}
[2024-09-28 03:18:50] local.ERROR: preg_replace(): Unknown modifier '�' {"exception":"[object] (ErrorException(code: 0): preg_replace(): Unknown modifier '�' at E:\\object\\Modules\\Order\\Transformers\\OrderLogResource.php:910)
[stacktrace]
4、初步得出原因,变量 $otherPattern 的值为 “省/州由” 包含 “/” 所导致。参考:正则表达式特殊字符有: . \ + * ? [ ^ ] $ ( ) { } = ! < > | : – # 。注意 / 不是正则表达式特殊字符。代码调整如下
foreach ($otherPatterns as $otherPattern) {
if ($originalDescription == $description) {
$description = preg_replace('/(' . preg_quote($startPattern, '/') . ')[\s\S]*' . $pattern . '[\s\S]*(,' . preg_quote($otherPattern, '/') . ')/', '$1***' . $pattern . '***,' . $otherPattern, $description);
}
}
5、不再报错,替换后的格式为:邮寄地址由***变更为***。符合预期。如图2
![报错:[2024-09-28 02:59:09] local.ERROR: preg_replace(): Unknown modifier '�' {"exception":"[object] (ErrorException(code: 0): preg_replace(): Unknown modifier '�' at )](https://www.shuijingwanwq.com/wp-content/uploads/2024/09/1-3.png)

近期评论