Mam ciąg z atrybutów HTML:PHP - podzielić ciąg atrybutów HTML do tablicy indeksowanej
$attribs = ' id= "header " class = "foo bar" style ="background-color:#fff; color: red; "';
Jak przekształcić ten ciąg do tablicy indeksowanej, jak:
array(
'id' => 'header',
'class' => array('foo', 'bar'),
'style' => array(
'background-color' => '#fff',
'color' => 'red'
)
)
dzięki czemu mogę użyć funkcji array_merge_recursive PHP do scalenia 2 zestawów atrybutów HTML.
Dziękuję
Dziękuję Gumbo, Twój regex jest super. Jedyny problem to: $ attrs ['class'] lub $ attrs ['style'] zwracają ciągi znaków: więc trudno będzie je połączyć z innym łańcuchem $ attribs, na przykład łącząc 2 zestawy atrybutów: $ attribs1 = 'class = "foo bar"'; $ attribs2 = 'class = "lorem"'; do "class =" foo bar lorem "' Dlatego chciałbym, aby $ attrs [' class '] zwróciło tablicę: array (' foo ',' bar ') Czy masz pomysł, aby to ulepszyć ? – abernier
Naprawdę kocham to rozwiązanie ... ale nie dostaję regex xD to trochę za dużo dla mojej głowy – lumio
Właśnie napisałem alternatywne wyrażenie regularne, które również parsuje atrybuty boolowskie w stylu HTML5 (bez znaku =) i używa odwołania wstecznego do cytatów: '(\ w +) \ s * (= \ s * ([" ']) (. *?) \ 2 \ s)? ' –