Подключение файла через fopen

Тема в разделе "PHP", создана пользователем Jak1777, 7 ноя 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Jak1777

    Jak1777 Создатель

    Регистр.:
    15 июн 2007
    Сообщения:
    16
    Симпатии:
    1
    Нужно забирать строчку с сайта на другом сервере и выводить ее, как это реализовать?
    Нашел код на примере title но он не работает..
    Код:
    <?php
    $file = fopen ("http://site.com/sample.php", "r");
    if (!$file) {
        echo "<p>Unable to open remote file.\n";
        exit;
    }
    while (!feof ($file)) {
        $line = fgets ($file, 1024);
        /* Это будет работать, только если title и его тэги расположены в одной строчке */
        if (eregi ("<title>(.*)</title>", $line, $out)) {
            $title = $out[1];
            break;
        }
    }
    fclose($file);
    ?>
    
    содержимое sample.php:
    Код:
    <title><а href="http://ya.ru/">555</a></title>
    как заставить его работать? allow_url_fopen включен..
     
  2. potuga

    potuga

    Регистр.:
    22 сен 2009
    Сообщения:
    376
    Симпатии:
    91
    Попробуй так:

    PHP:
    <?php
    $file 
    fopen ("http://site.com/sample.php""r");
    if (!
    $file) {
        echo 
    "<p>Unable to open remote file.\n";
        exit;
    }
    while (!
    feof ($file)) {
        
    $line .= fgets ($file1024);
    }

    if (
    eregi ("<title>(.*)</title>"$line$out)) {
        
    $title $out[1];
    }

    echo 
    $title;

    fclose($file);
    ?>
     
    Jak1777 нравится это.
  3. Jak1777

    Jak1777 Создатель

    Регистр.:
    15 июн 2007
    Сообщения:
    16
    Симпатии:
    1
    Работает, но теперь другая проблема..
    На сайте на одной странице код используется несколько раз, и каждый раз он увеличивает на 1 количество выводимых строк..
    т.е.
    Первая вставка - выводит [подгружаемый_код]
    Вторая вставка - выводит [подгружаемый_код][подгружаемый_код]
    Третья вставка - выводит [подгружаемый_код][подгружаемый_код][подгружаемый_код]

    как сделать чтоб он один раз выводил?
     
  4. swer

    swer

    Регистр.:
    15 июн 2008
    Сообщения:
    305
    Симпатии:
    38
    Вот так попробуйте этой ф-ии плевать сколько раз там тайл он возметь только первую , и доп бонус-конвертация всех тайтлов в utf8 это удобно когда страницы в разных кодировках.

    PHP:
    function get_title($file){ 
    $html file_get_contents("http://".$file);
    preg_match('|<title>(.*)</title>|mi'$html$result);
    preg_match('/encoding="([^"]+)"/iUs'$html$charset);
    $result iconv($charset[1], "utf8"$result[1]);
    return 
    $result;
    }
    Код:
    echo get_title("google.com");
     
    Jak1777 нравится это.
  5. Jak1777

    Jak1777 Создатель

    Регистр.:
    15 июн 2007
    Сообщения:
    16
    Симпатии:
    1
    Выводит пустой ответ..
    Код:
    <?php
    function get_title($file){ 
    $html = file_get_contents("http://".$file);
    preg_match('|<title>(.*)</title>|mi', $html, $result);
    preg_match('/encoding="([^"]+)"/iUs', $html, $charset);
    $result = iconv($charset[1], "utf8", $result[1]);
    return $result;
    }  
    echo get_title("vds-ns.com");
    ?> 
    Добавлено через 9 минут
    лишняя точка тут:
    Код:
    $line .= fgets ($file, 1024);
    Код работает, только ~ на 20 выводе показывается ошибка и дальше сайт не грузится:
    Код:
    Warning: fopen(http://site.com/sample.php): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden in /var/home/user/domains/site2.com/public_html/index.php(203) : eval()'d code on line 1579
    
    Unable to open remote file
     
  6. swer

    swer

    Регистр.:
    15 июн 2008
    Сообщения:
    305
    Симпатии:
    38
    почему то на этом сайте прег матч отказался выдрать строку, вот рабочая...

    PHP:
    function get_title($file){ 
    $html file_get_contents("http://".$file);
    eregi('<title>(.*)</title>'$html$result);
    $result $result[1];
    return 
    $result;
    }
    echo 
    get_title("vds-ns.com");
     
    Jak1777 нравится это.
  7. Jak1777

    Jak1777 Создатель

    Регистр.:
    15 июн 2007
    Сообщения:
    16
    Симпатии:
    1
    Он не хочет работать на DLE, вызов там идет через eval()
    Код:
    Fatal error: Cannot redeclare get_title() (previously declared in /var/home/user/domains/site2.com/public_html/index.php(203) : eval()'d code:290) in /var/home/user/domains/site2.com/public_html/index.php(203) : eval()'d code on line 348 
     
  8. FL@SH

    FL@SH Читатель

    Заблокирован
    Регистр.:
    20 июл 2008
    Сообщения:
    193
    Симпатии:
    25
    Так иди в раздел DLE
    http://www.nulled.ws/forumdisplay.php?f=63
     
Статус темы:
Закрыта.