Визначаємо кодування сторінок інтернету

Php початківцям

Питання не пусте, справа в тому, що коли кодування прописана в самому тілі HTML документа

проблем немає. Але, іноді творці сайтів не пишуть в Мета тегах кодування сторінок, як же бути в цьому випадку, і як дізнатися кодування таких сторінок. Подивимося, як працює інтерент. Броузер посилає на сервер запит сторінки з так званим Хедером, сервер відповідає браузеру таким же Хедером і, потім віддає сторінку в форматі HTML. Що ж таке Хедер - це технічні дані, якими броузер і сервер обмінюються, а користувачеві вони не виводяться, оскільки в звичайному випадку це не потрібно. Броузер, прочитавши Хедер, розуміє що йому треба робити і видає сторінку HTML в нормальному вигляді. Але, коли ми завантажуємо сторінку як робот, наприклад так:

Оглядачем ми в цьому випадку не користуємося, тому й не можемо простими способами визначити, наприклад, кодування завантаженої сторінки, так як в неї іноді не пишуть кодування. Подивимося як виглядає Хедер, який надсилається браузеру.

З усіх еітх рядків звернемо увагу лише на одну: Content-Type: text / html; charset = windows-1251. Ви бачите, що це прописана кодування. Що ж це за кодування? Це кодування самого сервера за замовчуванням (встановлюється адміном сервера в залежності від того, в яких кодуваннях в основному знаходяться сайти на цьому сервері). Тобто, якщо кодування сторінки не вказана в HTML тексті, броузер бере її з Хедера від сервера, з того рядка, яку ми побачили. Іноді, творець сайту сам посилає Кодування в хедері, а не пише її в тексті HTML документа (наприклад, на нашому сайті відсутнє поняття кодування, в кокой кодуванні налаштований робот або броузер, в такий ми йому віддаємо наші сторінки, тобто в який Ви хочете, в такий кодуванні і скачаєте наш сайт). А чому творець сайту не пропише її в HTML тексті? Її не обов'язково прописувати, якщо кодування його сайту збігається з кодуванням сервера за замовчуванням, броузер виведе нормально таку сторінку. А, в результаті, такий горе творець сайту навіть не підозрює які проблеми він створив для пошукових систем, ну і для нас з Вами. Простими способами ми не можемо дізнатися кодування. Хедер відділяється від тексту HTML символами \ r \ n \ r \ n.

Хедер \ r \ n \ r \ n Тут HTML сторінка.

// функція відділення хедера від сторінки
function return_data ($ path) <
$ Page = "";
$ Arr = explode ( "\ r \ n \ r \ n", $ path);
$ Heder = $ arr [0];
while (list ($ key. $ val) = @each ($ arr)) <
if ($ key == '0')
$ Page. = $ Val. "\ N";
>
return array ($ heder. $ page);
>

// функція підключення CURL
function ext_dll ($ path) <
$ Bibl_ext = dirname ($ _SERVER [ 'SCRIPT_FILENAME']). "/ Extensions / php_". $ Path. ". Dll";
if (! @extension_loaded ($ path) and is_file ($ bibl_ext)) <@dl ("php_". $path .".dll");>
if (! @extension_loaded ($ path))
return true;
>
$ Curl_return = ext_dll ( 'curl');

// $ arr ay [0] - це хедер сторінки
$ Heder = $ arr ay [0];
// $ arr ay [1] - це сама сторінка
$ Page = $ arr ay [1];

// дізнаємося кодування з хедера
if (preg_match ( "

i ", $ heder. $ arr r)) <$ch arset _heder = trim ( $arr r [ 1 ] );>
// дізнаємося кодування з сторінки
if (preg_match ( "

// функція перекладу сторінки в кодування windows-1251
function replace_page ($ ch arset. $ path) <
if (preg_match ( "