Foros del Web » Programando para Internet » PHP »

Cómo agrupar mismos estilos CSS en uno.

Estas en el tema de Cómo agrupar mismos estilos CSS en uno. en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 25/01/2010, 04:21
Avatar de 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!
  #2 (permalink)  
Antiguo 25/01/2010, 06:40
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Cómo agrupar mismos estilos CSS en uno.

Es un poco complicado, ya que tienes dos con font-familiy, vas a tener que dividir primero todas las lineas en un array y luego con la función array_unique, recorres el array para que quite los duplicados. Luego con implode lo vuelves a unir.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Etiquetas: agrupar, css, estilos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:03.