UTF8 с file_get_contents ()

0

Я использую file_get_contents(), чтобы получить HTML и удалить некоторые данные с веб-сайта. Источник не всегда UTF8, но я использую класс FORCEUTF8 для его исправления. Однако это не работает. Что я делаю не так?

/* Load UTF8 HTML */
require_once('/ForceUTF8/Encoding.php');
use \ForceUTF8\Encoding;
function loadHTMLInUtf8($url){
$utf8_or_latin1_or_mixed_string=file_get_contents($url);
return Encoding::toUTF8($utf8_or_latin1_or_mixed_string);
}    

$html=loadHTMLInUtf8('http://www.example.com/');
$dom->loadHTML('<meta http-equiv="content-type" content="text/html; charset=utf-8">'.$html);

Есть ли альтернативный способ сделать это?

Теги:
utf-8
file-get-contents

2 ответа

1
Лучший ответ

Известно, что file_get_contents уничтожает кодировку UTF8.

Попробуйте что-то вроде этого:

<?php
function file_get_contents_utf8($fn) {
    $content = file_get_contents($fn);
    return mb_convert_encoding($content, 'UTF-8',
        mb_detect_encoding($content, 'UTF-8, ISO-8859-1', true));
}
?>

Если это не сработает, не могли бы вы привести пример URL-адреса, где это не работает? (Я проверил источник библиотеки FORCEUTF8, и это выглядит не очень эффективно, и я предполагаю, что эта небольшая функция может сделать то же самое (и она является родной в PHP-коде)).

  • 0
    Большое спасибо за ваш хороший и полный ответ. Это не работает сейчас, хотя, с этим примером: zoomnews.es/468680/al-dente/…
  • 0
    Он продолжает сохранять название так: «El 'pequeà ± o Nicolôs' q ...» :)
Показать ещё 5 комментариев
1

Вы можете использовать метод utf8_encode. Он должен делать то же, что и описанный выше метод.

  • 0
    Большое спасибо за ваш ответ, но какая именно разница между этим и ответом выше?
  • 1
    @Alberich это было первым.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню