Реклама на сайте Advertise with us

Замены file_get_content

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:



С нами с 03.10.08
Сообщения: 129
Рейтинг: 141

Ссылка на сообщениеДобавлено: 02/11/08 в 16:38       Ответить с цитатойцитата 

Допустим имеем хост с версией php3, либо с отключеннными fopen оболочками, либо все вместе . Стоит допусим cURL. Нужно получить в строку исходный код страници что грабим для дальнейшей замены в нем некоторых тегов. Какие есть мысли? Я знаю что можно с помощью cURL, по сути так и делаю. Хочется увидеть ваши решения.

Пишу скрипты, асикью 444584-921

0
 

php

С нами с 09.10.06
Сообщения: 3706
Рейтинг: 2410


Передовик Master-X (16.01.2010)
Ссылка на сообщениеДобавлено: 02/11/08 в 16:41       Ответить с цитатойцитата 

ну в строку можно и так запихать
Код:
file_get_contents()
собсно как ты и указал. если я верно понял твой вопрос

IPhosters.com - любые решения для Вас (виртуалы от $4.99, vps от $11.99, дедики от $95)

4
 



С нами с 03.10.08
Сообщения: 129
Рейтинг: 141

Ссылка на сообщениеДобавлено: 02/11/08 в 16:44       Ответить с цитатойцитата 

_s_[sov] писал:
ну в строку можно и так запихать
Код:
file_get_contents()
собсно как ты и указал. если я верно понял твой вопрос


Дело в том, что эта функция была введена в PHP 4.3.0, URL в качестве с этой функцией, если "fopen-оболочки" включены.

Пишу скрипты, асикью 444584-921

0
 

php

С нами с 09.10.06
Сообщения: 3706
Рейтинг: 2410


Передовик Master-X (16.01.2010)
Ссылка на сообщениеДобавлено: 02/11/08 в 16:51       Ответить с цитатойцитата 

ну тогда используй
Код:
file()
и далее
Код:
implode()
так тоже можно...

IPhosters.com - любые решения для Вас (виртуалы от $4.99, vps от $11.99, дедики от $95)

0
 

« ... full on ... »

С нами с 17.03.07
Сообщения: 670
Рейтинг: 1686

Ссылка на сообщениеДобавлено: 02/11/08 в 16:55       Ответить с цитатойцитата 

Цитата:
имеем хост с версией php3

...который восстановили после криогенной заморозки в 1998 году! icon_smile.gif

По сабжу - скачай клиентский php-код с sape.ru и посмотри как там сделано, вроде там аж 4 разных варианта на разные случаи реализовано.

Power of the lime madness...

0
 



С нами с 03.10.08
Сообщения: 129
Рейтинг: 141

Ссылка на сообщениеДобавлено: 02/11/08 в 18:39       Ответить с цитатойцитата 

_s_[sov] писал:
ну тогда используй
Код:
file()
и далее
Код:
implode()
так тоже можно...


имеешь введу

Код:

$fcontents = implode ('', file ('http://www.example.com/'));


только fopen-оболочки отключены, работать не будет.

Пишу скрипты, асикью 444584-921

0
 

127.0.0.1

С нами с 26.04.06
Сообщения: 1092
Рейтинг: 557

Ссылка на сообщениеДобавлено: 02/11/08 в 19:14       Ответить с цитатойцитата 

вообщем-то курлом и делать, других вариантов нет, кроме как через сокеты

4
 

php

С нами с 09.10.06
Сообщения: 3706
Рейтинг: 2410


Передовик Master-X (16.01.2010)
Ссылка на сообщениеДобавлено: 03/11/08 в 09:51       Ответить с цитатойцитата 

TRUE_AND_FALSE у тебя доступ к php.ini есть?

IPhosters.com - любые решения для Вас (виртуалы от $4.99, vps от $11.99, дедики от $95)

0
 



С нами с 03.10.08
Сообщения: 129
Рейтинг: 141

Ссылка на сообщениеДобавлено: 03/11/08 в 09:55       Ответить с цитатойцитата 

_s_[sov] писал:
TRUE_AND_FALSE у тебя доступ к php.ini есть?
Нету. Скрипт для общего пользования.

Пишу скрипты, асикью 444584-921

0
 

« ... full on ... »

С нами с 17.03.07
Сообщения: 670
Рейтинг: 1686

Ссылка на сообщениеДобавлено: 03/11/08 в 10:34       Ответить с цитатойцитата 

TRUE_AND_FALSE:
Ещё разок, т.к. есть где посмотреть неплохое решение: клиентский PHP-код sape.ru содержит решение file_get_contents, CURL и sockets, включающее проверку на подходящий вариант и работающее на большинстве хостов. Внутри скрипта sape.ru есть такая функция:

Код:
    function fetch_remote_file($host, $path) {
       
        $user_agent = 'SAPE_Client PHP ' . $this->_version;
       
        @ini_set('allow_url_fopen',          1);
        @ini_set('default_socket_timeout',   $this->_socket_timeout);
        @ini_set('user_agent',               $user_agent);
       
        if (
            $this->_fetch_remote_type == 'file_get_contents'
            ||
            (
                $this->_fetch_remote_type == ''
                &&
                function_exists('file_get_contents')
                &&
                ini_get('allow_url_fopen') == 1
            )
        ) {
           
            if ($data = @file_get_contents('http://' . $host . $path)) {
                return $data;
            }
       
        } elseif (
            $this->_fetch_remote_type == 'curl'
            ||
            (
                $this->_fetch_remote_type == ''
                &&
                function_exists('curl_init')
            )
        ) {
           
            if ($ch = @curl_init()) {

                @curl_setopt($ch, CURLOPT_URL,              'http://' . $host . $path);
                @curl_setopt($ch, CURLOPT_HEADER,           false);
                @curl_setopt($ch, CURLOPT_RETURNTRANSFER,   true);
                @curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,   $this->_socket_timeout);
                @curl_setopt($ch, CURLOPT_USERAGENT,        $user_agent);
               
                if ($data = @curl_exec($ch)) {
                    return $data;
                }
               
                @curl_close($ch);
            }
           
        } else {
           
            $buff = '';
            $fp = @fsockopen($this->_server, 80, $errno, $errstr, $this->_socket_timeout);
            if ($fp) {
                @fputs($fp, "GET {$path} HTTP/1.0\r\nHost: {$host}\r\n");
                @fputs($fp, "User-Agent: {$user_agent}\r\n\r\n");
                while (!@feof($fp)) {
                    $buff .= @fgets($fp, 128);
                }
                @fclose($fp);
               
                $page = explode("\r\n\r\n", $buff);
           
                return $page[1];
            }
           
        }
       
        return $this->raise_error('Не могу подключиться к серверу: ' . $host . $path);
    }


На основе этого можно сделать своё, как минимум.

Power of the lime madness...

4
 



С нами с 19.11.03
Сообщения: 3973
Рейтинг: 2362

Ссылка на сообщениеДобавлено: 03/11/08 в 19:50       Ответить с цитатойцитата 

Аналог file_get_contents() можно сваять с помощью сокетов, кури : http://php.net/fsockopen.

4
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »