Attribute von Tags (Beispiel 2)

Weitere Beispiele

Beispiel ausführen
Wie Beispiel 1. Hier wird zusätzlich versucht die Erkennung etwas fehlertoleranter zu gestalten. Es sollen auch Attribute welche Whitespace enthalten und nicht in Anführungen eingeschlossen sind richtig erkannt werden. Also z.B. etwas wie name = peter pan border = 1 Der Trick dabei ist den String vor der Auswertung umzudrehen (reverse).
<?php


function getAttributes($s)
{
    
$s strrev($s);
    
$stack = array();

    
$reg_exp '#\s?(?:"([^"]*)"|\'([^\']+)\'|([^=]+))\s?=\s?(\w*)#';

    
$success preg_match_all($reg_exp$s$matches);

    if (!
$success) {
        return 
false;
    }

    
$n count($matches[1]);

    for (
$i=0$i $n$i++){

        
$match2use = !empty($matches[1][$i])
            ? 
$matches[1][$i]
            : (!empty(
$matches[2][$i])
                ? 
$matches[2][$i]
                : 
$matches[3][$i]);

        
$key strrev($matches[4][$i]);
        
$value strrev($match2use);
        
$stack[$key] = $value;
    }
    return 
$stack;
}




$test = array(
 
'border = "1"',
 
"border = '1'",
 
'border = 1',
 
'single=\'1\' double="2" noquotes = 3 ',
 
'a = 12 b = c d = "1" e=\'"test"\'',
 
'more="hattu=12"',
 
'name = peter pan border="12"',
);


foreach (
$test as $s){

    
printf ('<h1>%s</h1>'$s);
    
$arr getAttributes($s);
    
print_r($arr);

}

?>

Benutzte Funktionen


Hinweise zum DatenschutzImpressum © 2005-2008 S. Eickhoff