dedlfix: foreach

Beitrag lesen

echo $begrüßung;

ist zwar schon wieder eine Weile her aber mich würde ehrlich interessieren was an der foreach Schleife falsch sein soll?

Nichts. Das foreach($contents[1] ... sah nur auf den ersten Blick seltsam aus. Da $contents aber so aussieht,

Array
(
    [0] => Array
        (
            [0] =>
            [1] =>
        )

[1] => Array
        (
            [0] => F6
            [1] => DF
        )

)

ist das völlig in Ordnung gewesen. Nur die Gierigkeit des zweiten preg_replace() war das Problem.

Das Problem lässt sich aber mit preg_replace_callback() eleganter lösen. Man braucht nur eine Funktion, die von der Fundstelle den Hex-Wert in das Zeichen umrechnet.

echo preg_replace_callback('#<(.*)>#U', 'hex2char', $string);  
  
function hex2char($match) {  
  return chr(hexdec($match[1]));  
}

$match bekommt für die erste Fundstelle dieses Array

array(2) {
    [0]=>
    string(4) "<F6>"
    [1]=>
    string(2) "F6"
  }

übergeben, also die komplette Fundstelle im Element 0 und aufgrund der Gruppierung im Pattern den Hexwert im Element 1. Dieser muss umgerechnet und zurückgegeben werden.

echo "$verabschiedung $name";