Wenn man HTML oder XML Tags mit eigenen Skripten bearbeiten möchte muss man oft
die Attribute der Tags und deren Werte auslesen.
Das kann man mit Hilfe eines regulären Ausdrucks wie im folgenden Beispiel machen.
<?php
function getAttributes($s)
{
$stack = array();
$reg_exp = '#(\w*)\s?=\s?(?:"([^"]*)"|\'([^\']+)\'|(\S+))#';
$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[2][$i])
? $matches[2][$i]
: (!empty($matches[3][$i])
? $matches[3][$i]
: $matches[4][$i]);
$stack[$matches[1][$i]] = $match2use;
}
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);
}
?>