Analizando CSS usando PHP error undefined offset 1
Frecuentes
Visto 404 veces
-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?
1 Respuestas
1
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 php html css parsing or haz tu propia pregunta.
El error indica que el problema está en cssparser.php. ¿Qué hay de publicar que código en su lugar? :) - SenorAmor