Tengo una cadena con atributos HTML:PHP - dividir una serie de atributos HTML en una matriz indexada
$attribs = ' id= "header " class = "foo bar" style ="background-color:#fff; color: red; "';
cómo transformar esa cadena en una matriz indexada, como:
array(
'id' => 'header',
'class' => array('foo', 'bar'),
'style' => array(
'background-color' => '#fff',
'color' => 'red'
)
)
para que pueda usar la función PHP array_merge_recursive para fusionar 2 conjuntos de atributos HTML.
Gracias
Gracias Gumbo, su expresión regular es genial El único problema es que $ attrs ['class'] o $ attrs ['style'] están devolviendo cadenas: por lo que será difícil fusionarlos con otra cadena de $ attribs, por ejemplo, fusionando esos 2 conjuntos de atributos: $ attribs1 = 'clase = "barra foo"'; $ attribs2 = 'clase = "lorem"'; en una 'clase =' foo bar lorem '' Por eso me gustaría que $ attrs ['clase'] devuelva una matriz: array ('foo', 'bar') ¿Tiene una idea para mejorar esto? ? – abernier
Realmente me encanta esta solución ... pero no obtengo la expresión regular xD es un poco para mi cabeza – lumio
Acabo de escribir una expresión regular alternativa que también analiza atributos booleanos de estilo HTML5 (sin un signo =) y utiliza una referencia para las comillas: '(\ w +) \ s * (= \ s * ([" ']) (. *?) \ 2 \ s)? ' –