PHP - split ein string der HTML-Attribute in ein indiziertes array
Ich habe einen string mit HTML-Attributen:
$attribs = ' id= "header " class = "foo bar" style ="background-color:#fff; color: red; "';
How, um die Zeichenfolge in ein indiziertes array, wie:
array(
'id' => 'header',
'class' => array('foo', 'bar'),
'style' => array(
'background-color' => '#fff',
'color' => 'red'
)
)
also ich kann die PHP-Funktion array_merge_recursive zum Zusammenführen von 2 sets von HTML-Attributen.
Danke
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden SimpleXML:
Dies setzt Voraus, dass die Attribute immer name/Wert-Paare...
Könntest du einen regulären Ausdruck verwenden, um zu extrahieren, die Informationen:
Jetzt müssen Sie nur zum Parsen der Klassen
class
(split bei Leerzeichen) und property-Deklarationen vonstyle
(ein wenig schwieriger, als es enthalten Kommentare und URLs mit;
in es).(\w+)\s*(=\s*(["'])(.*?)\2\s)?
Können Sie nicht mit einem regulären Ausdruck zum Parsen von html-Parametern. Dies ist, weil die syntax ist kontextabhängig. Sie können reguläre Ausdrücke verwenden, um die tokenisierung der Eingabe, aber Sie brauchen eine state-Maschine zu analysieren.
Wenn die Leistung ist nicht wirklich eine große Sache, der sicherste Weg, es zu tun, ist wahrscheinlich zu wickeln Sie die Attribute in ein tag-und dann senden Sie es durch einen html-parser. ZB.:
Wahrscheinlich könnten Sie die Optimierung der oben genannten, durch die Wiederverwendung der parser, oder durch die Verwendung XmlReader oder die sax-parser.
"
werden müssen, vertreten durch die Charakter Referenzen.Kann sein, dass das hilft dir ..
Was es tut ..
http://simplehtmldom.sourceforge.net/
data
Feld, welches die text wihin die<?name
und?>
. Im Fall von ein tag wie:<?xml-stylesheet type="text/xsl" href="https://sms.m2osw.com/sitemap.xsl"?>
erhalten Sie einen einfachen string wie:type="text/xsl" href="https://sms.m2osw.com/sitemap.xsl"
was Sie brauchen, um zu analysieren, wie Attribute.Einfach Weg sein könnte, auch: