簡體   English   中英

如何將以下內容轉換為preg_replace_callback(在PHP 7.3.2中使用)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM