Узнать имя домена,PHP

Discussion in 'PHP' started by InfectedM, 4 Jun 2015.

  1. InfectedM

    InfectedM Elder - Старейшина

    Joined:
    4 Nov 2007
    Messages:
    155
    Likes Received:
    12
    Reputations:
    0
    нужно:
    1) скачать страничку, в которой будет адрес сайта, распарсить его (узнать домен и path)


    делаю так:
    PHP:
    $url=get_page('test1.ru',"/777/server.php?parse_url=http://test1.ru/777/index.php");
    $url=urldecode(trim($url)); // показывает: http://test1.ru/asterix-and-obelix
    //$url = str_replace(array("\r\n", "\r", "\n"), '', $url); //не помогло
    var_dump(parse_url($url));
    выводит:

    в чем может быть проблема?
    Есть подозрение что туда заносятся каких-то 2 невидимых символа
    Если вставлять эту ссылку в переменную вручную , то все норм, но когда она формируется через функцию - не работает, хотя с виду, она нормальная.



    Качаю странички через
    PHP:
    function get_page($site,$page)
    {
    $isheaders=false;
    $page=trim($page);
    $site=trim($site);
    $socket fsockopen($site80$errno$errstr15);
    if (
    $socket){

        
    $send  "GET $page HTTP/1.0\r\n";
        
    $send .= "User-Agent: Opera 9.27 (compatible; MSIE 6.0; Windows NT 5.1; ru)\r\n";
        
    $send .= "Host: $site\r\n";
        
    $send .= "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\n";
        
    $send .= "Accept-Language: ru,en;q=0.9,ru-RU;q=0.8\r\n";
        
    $send .= "Connection: close\r\n\r\n".$post;


        if(
    fputs($socket,$send)) {
            if(!
    $isheaders) while(fgets($socket,1024)!="\r\n" && !feof($socket));
            
    $he="";
            while(!
    feof($socket)) $he.=fread($socket,10240);
        };
        
    fclose($socket);
    }
    return 
    $he;
    };
     
    #1 InfectedM, 4 Jun 2015
    Last edited: 4 Jun 2015
  2. winstrool

    winstrool ~~*MasterBlind*~~

    Joined:
    6 Mar 2007
    Messages:
    1,414
    Likes Received:
    911
    Reputations:
    863
    Хз что у вас там показывает у меня вот как, код поправил для удобства вызова:
    Code:
     $url=get_page('test1.ru',"/777/index.php");
    $url=urldecode(trim($url)); // показывает: http://test1.ru/asterix-and-obelix
    //$url = str_replace(array("\r\n", "\r", "\n"), '', $url); //не помогло
    var_dump(parse_url($url)); 
    в index.php положил одну строчку "http://test1.ru/asterix-and-obelix"
    вывод получился такой:
    от себя добавлю, зачем тут $url=urldecode(trim($url)); используите trim когда оно уже используется в функции

    P.S: полностью рабочий скрипт:
    PHP:
     $url=get_page('test1.ru',"/777/index.php");
    $url=urldecode($url);
    var_dump(parse_url($url));

    function 
    get_page($site,$page)
    {
    $isheaders=false;
    $page=trim($page);
    $site=trim($site);
    $socket fsockopen($site80$errno$errstr15);

    if (
    $socket){

        
    $send  "GET $page HTTP/1.0\r\n";
        
    $send .= "User-Agent: Opera 9.27 (compatible; MSIE 6.0; Windows NT 5.1; ru)\r\n";
        
    $send .= "Host: $site\r\n";
        
    $send .= "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\n";
        
    $send .= "Accept-Language: ru,en;q=0.9,ru-RU;q=0.8\r\n";
        
    $send .= "Connection: close\r\n\r\n".$post;


        if(
    fputs($socket,$send)) {
            if(!
    $isheaders) while(fgets($socket,1024)!="\r\n" && !feof($socket));
            
    $he="";
            while(!
    feof($socket)) $he.=fread($socket,10240);
        };
        
    fclose($socket);
    }
    return 
    $he;
    };
     
    _________________________
  3. InfectedM

    InfectedM Elder - Старейшина

    Joined:
    4 Nov 2007
    Messages:
    155
    Likes Received:
    12
    Reputations:
    0
    Если просто парсить строчку из переменной - все ок.
    А вот когда я ее получаю с БД через GET, начинаются какие-то чудеса.
    думаю проблема в этом, но не могу понять в чем именно


    На "глаз" - все ок, никаких отклонений нету.
     
  4. winstrool

    winstrool ~~*MasterBlind*~~

    Joined:
    6 Mar 2007
    Messages:
    1,414
    Likes Received:
    911
    Reputations:
    863
    Эти чудеса называется кодировка!
     
    _________________________
    frank likes this.