[英]How do I convert the following to preg_replace_callback (for use in PHP 7.3.2)
嘗試獲取以下代碼以不使用/e
修飾符(使用preg_replace_callback
)。
private function encodeHeader($input, $charset = 'ISO-8859-1')
{
preg_match_all('/(\w*[\x80-\xFF]+\w*)/', $input, $matches);
foreach ($matches[1] as $value) {
$replacement = preg_replace('/([\x80-\xFF])/e', '"=" . strtoupper(dechex(ord("\1")))', $value);
$input = str_replace($value, '=?' . $charset . '?Q?' . $replacement . '?=', $input);
}
return $input;
}
只需使用$m
參數作為匹配項,使用匿名函數返回您擁有的內容,因此$m[1]
代替\\1
:
$replacement = preg_replace_callback('/([\x80-\xFF])/',
function($m) {
return "=" . strtoupper(dechex(ord($m[1])));
}, $value);
如果只使用'/[\\x80-\\xFF]/'
而沒有捕獲組,則使用$m[0]
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.