preg_replace mit Option /e durch preg_replace_callback ersetzen

Sempervivum

Erfahrenes Mitglied
Hallo,
bei Stackoverflow bekomme ich leider keine Antwort, nur ein Downvote:
http://stackoverflow.com/questions/...er-e-in-preg-replace-by-preg-replace-callback
Ich habe versucht, preg_replace() mit der Option /e durch preg_replace_callback() zu ersetzen und bin nicht sicher, ob meine Änderung richtig ist:
PHP:
**
* Function to encode a header if necessary
* according to RFC2047
*/
function _encodeHeader($input, $charset = 'ISO-8859-1')
{
    preg_match_all('/(\s?\w*[\x80-\xFF]+\w*\s?)/', $input, $matches);
    foreach ($matches[1] as $value) {
        $replacement = preg_replace('/([\x20\x80-\xFF])/e', '"=" . strtoupper(dechex(ord("\1")))', $value);
        //$replacement = preg_replace_callback('/([\x20\x80-\xFF])/',
        //    function($subs) {
        //        return "=" .  strtoupper(dechex(ord($subs[1])));
        //    }, $value);
        $input = str_replace($value, '=?' . $charset . '?Q?' . $replacement . '?=', $input);
    }

    return $input;
}
Zeile 9 ist das Original und das auskommentierte meine Änderung.
Kann da jemand mit erweiterten Kenntnissen einen Blick darauf werfen und es bestätigen oder korrigieren?
 
Zuletzt bearbeitet:
Inzwischen habe ich es Schritt-für-Schritt korrigiert und besser verstanden. Änderung aktiviert und es scheint zu funktionieren.
 

Neue Beiträge

Zurück