simplecontent

PHP Snippets und Beispiele

Inhaltsverzeichnis A-Z Register
Beispiel ausführen

Attribute von Tags (Beispiel 2)

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). Das PHP Code Beispiel:
<?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);

}

?>

Dieses PHP Snippet soll in erster Linie als Beispiel und Anregung für eigene Bemühungen dienen.
Gerne darf man es für Projekte aller Art benutzen.
Möchte jemand das Snippet also solches in ähnlicher oder anderer Form veröffentlichen ist ein kleiner Hinweis auf simplecontent.net nicht zuviel verlangt oder Herr Koch?
Für die Abwesenheit von Fehlern kann natürlich keine Gewähr gegeben werden.