2012-07-14 13 views
8

Estoy tratando de analizar un archivo HTML que tiene estructura HTML terrible (créeme, es) y debido a esto y mi falta de conocimiento, no pude escribir el mío analizador Más tarde traté de usar el analizador Simple HTML Dom, porque mucha gente (en SO también) lo recomienda.Dom HTML simple - Error fatal al usar load_file

Necesité el simple_html_dom.php, luego creé el objeto. Parecen funcionar, la función require() devuelve "1" y var_dump() - el objeto devuelve un objeto.

Después de esto traté de cargar la URL como se hizo en el manual, pero recibí un error fatal, sin importar la URL que probé. El error fue el siguiente:

Fatal error: Call to undefined function mb_detect_encoding() in 
      /home/fema/web/subdomain/devel/www_root/parser/ 
      simplehtmldom_1_5/simple_html_dom.php on line 988 

he comprobado lo que está en la línea 988 y es el siguiente:

// Have php try to detect the encoding from the text given to us. 
     $charset = mb_detect_encoding($this->root->plaintext . "ascii", 
        $encoding_list = array("UTF-8", "CP1252")); 

entiendo que se trata de la codificación de caracteres, pero eso es todo. No he encontrado nada al respecto ni con google ni con SO.

Todo mi código es (URL marcador de posición):

<?php 

require('simplehtmldom_1_5/simple_html_dom.php'); 

// Create a DOM object 
$dom = new simple_html_dom(); 

$dom->load_file('http://www.google.com/'); 

?> 

Podría alguien por favor me diga qué hacer? O algún tipo de consejo cuando sucede algo como esto.

Gracias de antemano.

Respuesta

9

A su compilación de PHP le falta la extensión de cadena multibyte. En realidad, no es el caso, a menos que esté utilizando una compilación de PHP realmente antigua o compilada con opciones de compilación inusuales, ya que mientras la extensión multibyte no está habilitada de manera predeterminada, generalmente se considera una de las extensiones esenciales que más o menos cada compilación de PHP tiene en estos días.

Si está ejecutando una versión anterior de PHP, le recomiendo actualizar, si tiene una compilación bastante reciente, verifique con phpinfo() que tiene instalado multibyte. Si no lo hace, puede que necesite reinstalar o reconstruir PHP desde la fuente.

Si está instalado, --enable-mbstring debería estar en la lista de opciones de compilación. Consulte el manual de PHP en la extensión multibyte, especialmente el chapter on installation, para obtener más detalles.

+0

Gracias por su respuesta, es PHP 5.3, pero le preguntaré a mi amigo. (Estoy usando su servidor.) –

+0

Parece que tenía razón, pero no hay suficiente RAM para compilar un nuevo PHP, dice. Gracias por su respuesta. –

+0

Genial Gran respuesta ... –

0

Retire la barra inclinada (/) en la cadena de URL que se proporciona en el método load_file() y funciona.
Aparentemente, el método load_file() de la Biblioteca de DOM simple HTML tiene un problema con las barras diagonales que se anexan al final de una cadena de URL.

Cuestiones relacionadas