2010-12-29 5 views
4

эй, ребята, я использую простой html dom для извлечения контента с другого сайта, но дело в том, что проблема с кодировкой символов связана с материалом, полученным с помощью простого html dom. Персонажи появляются как маленький бриллиант с вопросительным знаком внутри.Простое кодирование символов html dom

Проблема с кодировкой символов возникает только при извлеченном содержимом, и весь текст на моем сайте отображается в порядке.

Если кто-то может помочь, это будет здорово.

ответ

5

Попробуйте использовать iconv, чтобы преобразовать кодировку скребкового текста в кодировку, которую вы используете на своей странице.

Подпись:

string iconv (string $in_charset , string $out_charset , string $str) 

Пример:

echo iconv("ISO-8859-1", "UTF-8", $text); 
2

Перейти на сайт и проверить их кодировку, просмотрев данные страницы.

$text = iconv(mb_detect_encoding($text), "UTF-8//TRANSLIT//IGNORE", $text); 
2

Я тоже была эта проблема, но это не кодировка problem.It была GZIP сжатие, что простой HTML DOM не обрабатывает. Вот мое решение. Используйте функцию file_get_html2 вместо file_get_html.

function curl($url){ 
    $headers[] = "User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13"; 
    $headers[] = "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; 
    $headers[] = "Accept-Language:en-us,en;q=0.5"; 
    $headers[] = "Accept-Encoding:gzip,deflate"; 
    $headers[] = "Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.7"; 
    $headers[] = "Keep-Alive:115"; 
    $headers[] = "Connection:keep-alive"; 
    $headers[] = "Cache-Control:max-age=0"; 

    $curl = curl_init(); 
    curl_setopt($curl, CURLOPT_URL, $url); 
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); 
    curl_setopt($curl, CURLOPT_ENCODING, "gzip"); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); 
    $data = curl_exec($curl); 
    curl_close($curl); 
    return $data; 

} 
function file_get_html2($url){ 
    return str_get_html(curl($url)); 
} 
Смежные вопросы