Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/01/2010, 04:21
Avatar de neodani
neodani
 
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Cómo agrupar mismos estilos CSS en uno.

Buenas,

Os explico el problema que estoy teniendo... tengo una expresión regular que me captura todos los estilos que coinciden con un patron

Codigo CSS
Código CSS:
Ver original
  1. body { font-family: Arial, Verdana, sans-serif; font-size: 12px; color: #222; }
  2. body { font-family: Arial, Verdana, sans-serif; font-size: 12px; color: #222; }
  3. body { background-color: #fff; border:0px; font-weight:bold; }

Script

Código PHP:
Ver original
  1. <?
  2. $css='
  3. body
  4. {
  5.     font-family: Arial, Verdana, sans-serif;
  6.     font-size: 12px;
  7.     color: #222;
  8. }
  9. body {
  10.     background-color: #fff;
  11.     border:0px;
  12.     font-weight:bold;
  13. }
  14. body
  15. {
  16.     font-family: Arial, Verdana, sans-serif;
  17.     font-size: 12px;
  18.     color: #222;
  19. }
  20. ';
  21.  
  22. $propiedad='body';
  23. preg_match_all("/[\.#\s\w:-]*{$propiedad}[,\s+]+[\.#\s\w:-]*\{[^\}]*\}/is",$css,$matches);
  24.  
  25. $del_dup_html=array_unique($matches[0]);
  26.  
  27. echo "<pre>";
  28. print_r($del_dup_html);
  29. echo "</pre>";
  30.  
  31. foreach ($del_dup_html as $propiedad) {
  32.     echo $propiedad;
  33. }
  34. ?>

Ahora mismo las propiedades que son iguales las elimina. Eso lo hace bien.
Si hubiese dos veces
Código CSS:
Ver original
  1. body
  2. {
  3.     font-family: Arial, Verdana, sans-serif;
  4.     font-size: 12px;
  5.     color: #222;
  6. }
  7. body
  8. {
  9.     font-family: Arial, Verdana, sans-serif;
  10.     font-size: 12px;
  11.     color: #222;
  12. }

Solo mostraría uno.

Lo que quiero conseguir es que en lugar que haya 2 estilos que se llamen body, agruparlos en uno solo.

El resultado final debería ser:

Código CSS:
Ver original
  1. body
  2. {
  3.     font-family: Arial, Verdana, sans-serif;
  4.     font-size: 12px;
  5.     color: #222;
  6.     background-color: #fff;
  7.     border:0px;
  8.     font-weight:bold;
  9. }

Le he estado dando vueltas y por el momento, no he encontrado como enfocar la solución... ya que no se como iterar las propiedades de cada estilo capturado... quizás con otra expresión regular?

¿Qué se os ocurre?

Muchas gracias de antemano!