Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Кодировка сайта при добовлении в базу скриптом.


Автор: anrs 17.12.2008, 17:39
Приветствую вас . Ребята , проблемка есть , сломал уже голову , нечего не получается ... У меня есть скриптик . Указываешь в нём сайтик , скриптик заходит на него и все ссылки , слова и т.д сдирает с сайта и добовляет в базу ...
С некоторых сайтов сдирает нормально текст и добовляет русский текст в базу . А снекоторых ( русско язычных сайтов ) сдирает русский текст и добовляет каракули в базу ... Знакомый мне подсказал , что надо найти функцию у скриптика , которая отвечает за поиск текста и добовление его в базу ... она находиться в файлике  spiderfuncs.php
Ребят не подскажите пожалуйста как настроить этот скриптик ... очень надо Зарание спасибо...
(сюда код не поместился - поэтому файлик прикрепил )

Автор: bars80080 17.12.2008, 18:19
ну, попробуй вот здесь :

Код

        do{
            $status = socket_get_status($fp);
            $data .= fgets($fp, 8192);
        } while (!feof($fp) && !$status['timed_out']) ;

        fclose($fp);
        if(!empty($char[0])) { $data = iconv($char[0], $char[1], $data); }

57-62 строчки, вставить строку с iconv

а в заголовок функции добавить: 

Код

function getFileContents($url) {
    global $user_agent, $char;

ну и на тех сайтах, где кракозябры устанавливать переменную $char перед запуском функций:

Код

$char = array('utf-8', 'cp-1251');


конечно, на нормальных переменной $char быть не должно

Автор: anrs 17.12.2008, 18:30
м... всё сделал кроме вот этого  : 
------------
ну и на тех сайтах, где кракозябры устанавливать переменную $char перед запуском функций:
код PHP
1:
        $char = array('utf-8', 'cp-1251');
------------

Я не понял этот код : $char = array('utf-8', 'cp-1251'); , устанавливать на те сайты по которым паук лазиет , или перед началом функции , перед началом функции я ставил , но вот всёравно не работает :(((

Автор: bars80080 17.12.2008, 18:48
Цитата(anrs @  17.12.2008,  17:30 Найти цитируемый пост)
перед началом функции , перед началом функции я ставил , но вот всёравно не работает 

вставлять перед тем, как ты вызываешь первую функцию из этого набора, короче в начале страницы поставь и проследи, чтобы она нигде не перезаписалась

попробуй ещё так:
$char = array('utf-8', 'cp1251');

Добавлено через 1 минуту и 27 секунд
я догадываюсь у тебя всё работает в кодировке 1251? а то мож, наоборот надо?

Автор: anrs 17.12.2008, 18:53
Cам сайт у меня в кодировке windows-1251 ... могёшь мне в аську написать ? я всё подробно распишу , чтоб легче было понять :( а то некто помочь не может ... 377228592 ... 

Автор: bars80080 17.12.2008, 18:57
аськи нет и не будет

так попробовал $char = array('utf-8', 'cp1251'); ?

Автор: anrs 17.12.2008, 18:58
М... ща порпобую

Добавлено через 3 минуты и 15 секунд
Пробовал ... добавил так :

Код

<?php 
$char = array('utf-8', 'cp1251');

function getFileContents($url) {


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

Автор: bars80080 17.12.2008, 21:02
мда, надо глубже копать. да вроде там нигде перевода нету.


слушай, если напрямую поставить

не        if(!empty($char[0])) { $data = iconv($char[0], $char[1], $data); }
а          $data = iconv('utf-8', 'cp1251', $data);

поменяется что-нибудь?

Автор: anrs 17.12.2008, 21:09
нефига не поменяло :(((
Мож я чёт не так обьяснил и не тот файлик вообще выложил ... вот я движ прикрепил ...  spider.php это и есть тот скриптик паучка ... мож в реале я туплю и вообще не то загоняю ..

Автор: bars80080 17.12.2008, 21:24
не смог скачать, инфицирован он у тебя (может здесь подхватил), да и не досуг, завтра может быть

какой версии пхп? потому, как iconv() стала поддерживаться где-то с 4.4.7 или даже позже

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)