Analizando CSS usando PHP error undefined offset 1

Estoy tratando de analizar a través de css usando php. Estoy usando un analizador de css desde este enlace: http://www.phpclasses.org/browse/file/4684.html, pero sigo recibiendo este mensaje de error:

Notice: Undefined offset: 1 in C:\wamp\www\Thesis\cssparser-2003-09-20\cssparser.php on line 106

El código que estoy usando es el siguiente

include_once('cssparser-2003-09-20/cssparser.php');

foreach($html->find('link') as $link)
{
   $href = $link->getAttribute('href');
   $css = new cssparser();
   $css->Parse($href);
   echo $css->Get("body","color");
}

Esto buscará el atributo href y usará el atributo de este para capturar el archivo css que luego debe analizarse, pero se está produciendo el error anterior. Cualquier ayuda sería muy apreciada?

preguntado el 10 de marzo de 12 a las 15:03

El error indica que el problema está en cssparser.php. ¿Qué hay de publicar que código en su lugar? :) -

1 Respuestas

Línea 106 de cssparser.php dice:

list($codekey, $codevalue) = explode(":",$code);

EL explode() está generando el Desplazamiento indefinido error. Eso significa que el archivo css que se analiza tiene una declaración no válida en alguna parte y falta :. La explosión no puede encontrar ninguna. : in $code.

Ahora, esto es solo una suposición (no proporcionó un archivo .css real), pero el archivo podría tener algún contenido no válido, algo como esto:

.classdefinition {
  color #000000;
}

Hay una : falta entre color y #000000.

No creo que un comentario sea el problema, ya que a primera vista, la clase se encarga de omitirlos.

Intente pasar el archivo css a través de un Validador de CSS.

Si la sintaxis de CSS está bien, entonces la clase tiene un error.

Ahora bien, si ambos tenemos la misma (última) versión de cssparser.php, un parche rápido sería reemplazar las líneas 106-109 con:

$arr = explode(":", $code);
if (count($arr) == 2 && strlen(trim($arr[0])) > 0 && strlen(trim($arr[1])) > 0) {
  $this->css[$key][trim($arr[0])] = trim($arr[1]);
}

Pero, de nuevo, eso no garantiza que el CSS inválido se analice correctamente y que esta clase esté libre de errores.

Y tenga en cuenta que en realidad no probé ni trabajé con la clase, todo lo que se sugiere aquí es simplemente mirar el código que publicó y el código de la clase.

Edición posterior:

En una búsqueda rápida en Google, encontré Analizador PHP-CSS que parece más completo y robusto, y está alojado en Github (para que otros puedan contribuir).

Otra edición:

También verifica esta respuesta aquí, parece bastante simple, pero como dice el autor, no maneja los comentarios dentro de los selectores.

Espero que esto ayudó.

contestado el 23 de mayo de 17 a las 12:05

Hola lector de cuentos, estaba mirandogithub.com/sabberworm/PHP-CSS-Parser> y me preguntaba cómo tomarías el color de la etiqueta del cuerpo. - Elbento

Hmm, jugué un poco con él y no sé cómo extraer un selector individual de ese objeto. Es demasiado jodidamente complejo. Y parece que los selectores individuales están en su lista de tareas pendientes. - binario

La solución que solucionó solucionó un problema, pero ocurrió otro problema en la línea 198-200# 'foreach($parts as $part) { list($keystr,$codestr) = explotar("{",$part); $teclas = explotar(",",recortar($cadenaclave));' - Elbento

Publique aquí o proporcione un enlace para el archivo css que está tratando de analizar. - binario

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.