Foros del Web » Programando para Internet » PHP »

Problema para diferenciar propiedades HTML, CLASS, ID (Reg Expresions)

Estas en el tema de Problema para diferenciar propiedades HTML, CLASS, ID (Reg Expresions) en el foro de PHP en Foros del Web. Buenas, En un código CSS como este, necesito ser capaz de separar los elementos por si son HTML (no llevan ni punto ni # delante) ...
  #1 (permalink)  
Antiguo 06/02/2010, 16:21
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Problema para diferenciar propiedades HTML, CLASS, ID (Reg Expresions)

Buenas,

En un código CSS como este, necesito ser capaz de separar los elementos por si son

HTML (no llevan ni punto ni # delante)
CLASS (llevan un punto delante)
ID(llevan una # delante)

Ejemplo:
Código CSS:
Ver original
  1. body#help #content ul#helpCategories {
  2.     margin: 5px 0 0 0;
  3.     padding: 0;
  4.     list-style: none; }
  5.    
  6. #footer #footerGlobalNav ul li.first {
  7.     border-left: none;
  8. }
  9. .multipleColumns #pageContent-main, #pageContent-second {
  10.     width: 305px;
  11.     float: left;
  12. }

Me debería decir para la primera propiedad que

body#help #content ul#helpCategories {
HTML = body y ul
CLASS = no hay clases
ID = help, content y helpCategories


#footer #footerGlobalNav ul li.first {
HTML = ul y li
CLASS = first
ID = footer y footerGlobalNav


.multipleColumns #pageContent-main, #pageContent-second {
HTML = ninguna
CLASS = multipleColumns
ID = pageContent-main y pageContent-second


La expresión regular me selecciona todo lo que hay desde comienzo de linea hasta el signo {

preg_match_all("/[\.#\s\w:-]*\w[,\s+]+[:\.#\s\w:-]*\{/is",$linea,$matches)

Por lo que del resultado,

body#help #content ul#helpCategories {
#footer #footerGlobalNav ul li.first {
.multipleColumns #pageContent-main, #pageContent-second {


solo queda hacer la parte de diferenciar cuales son HTML, CLASS e ID, y no se como hacerlo de una manera que funcione para los 3 casos.

¿Se os ocurre algo?

Muchas gracias de antemano!
  #2 (permalink)  
Antiguo 06/02/2010, 16:36
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Problema para diferenciar propiedades HTML, CLASS, ID (Reg Expresions)

He conseguido sacar los ID y los CLASS de ese texto

// todos los ID #([:\w-]*)
// todos los CLASS \.([:\w-]*)


Pero no consigo como sacar solo los que no son ni ID ni CLASS

Debería sacar lo siguiente:

body#help #content ul#helpCategories {

body y ul

#footer #footerGlobalNav ul li.first {

ul y li

¿Alguna idea?

Muchas gracias de antemano!
  #3 (permalink)  
Antiguo 06/02/2010, 16:43
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema para diferenciar propiedades HTML, CLASS, ID (Reg Expresions)

precisamente ahí es cuando sirven las capturas... ;)

en dado caso debes obtener todo el fragmento de texto,y ya después interpretarlo...
/([\.#\s\w:-]*)\w[,\s+]+[:\.#\s\w:-]*\{/

analicemos solo un caso genérico... ya que hemos capturado el fragmento de información simplemente descubrimos que tipo de relación contiene... (:

simple, comparamos usando strstr() para comprobar si existe en dicho fragmento el símbolo # ... bingo!!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 07/02/2010, 03:55
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Problema para diferenciar propiedades HTML, CLASS, ID (Reg Expresions)

Cita:
Iniciado por pateketrueke Ver Mensaje
precisamente ahí es cuando sirven las capturas... ;)

en dado caso debes obtener todo el fragmento de texto,y ya después interpretarlo...
/([\.#\s\w:-]*)\w[,\s+]+[:\.#\s\w:-]*\{/

analicemos solo un caso genérico... ya que hemos capturado el fragmento de información simplemente descubrimos que tipo de relación contiene... (:

simple, comparamos usando strstr() para comprobar si existe en dicho fragmento el símbolo # ... bingo!!
Buenas!

Si descubrir si el fragmento tiene # o punto lo consigo pasandole otra expresión regular al fragmento para que me saque todo lo que encuentra, y lo hace bien.

// todos los ID #([:\w-]*)
// todos los CLASS \.([:\w-]*)

Solo que no se como capturar solo los trozos que no tienen # ni .
En el caso de este fragmento

#footer #footerGlobalNav ul li.first {

Debería meterme en el array de coincidencias el ul y el li

Esto es lo que aun no he conseguido

Gracias de antemano!

Etiquetas: class, html, propiedades, reg
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 19:14.