[php] Новичкам: задаем вопросы

Discussion in 'PHP' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. Nikit

    Nikit New Member

    Joined:
    19 Jan 2012
    Messages:
    21
    Likes Received:
    3
    Reputations:
    0
    Как получить код страницы example.com в переменную, для дальнейшего парсинга? :)
     
  2. Skofield

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

    Joined:
    27 Aug 2008
    Messages:
    952
    Likes Received:
    318
    Reputations:
    52
    Nikit file_get_contents
     
  3. Skofield

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

    Joined:
    27 Aug 2008
    Messages:
    952
    Likes Received:
    318
    Reputations:
    52
    Nightmarе
    PHP:
    preg_match_all("#[\r\n]<td>[\r\n](.*)[\r\n]</tr>[\r\n]#sU"$html$matches);
    print_r($matches[1]);
     
    1 person likes this.
  4. foma9999

    foma9999 New Member

    Joined:
    5 Jan 2010
    Messages:
    84
    Likes Received:
    2
    Reputations:
    -5
    Code:
    Date: Sun, 05 Feb 2012 08:39:58 GMT
    Location: http://111.ru/maps
    X-Content-Type-Options: nosniff
    
    Необходимо спарсить http://111.ru/maps
    preg_match("#Location:(.+?)#",$page,$qwe);

    Символ переноса все портит...
     
  5. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    2,007
    Likes Received:
    996
    Reputations:
    155
    PHP:
    preg_match('/Location: (.+)/'$data$matches);
    echo 
    $matches[1];
     
  6. foma9999

    foma9999 New Member

    Joined:
    5 Jan 2010
    Messages:
    84
    Likes Received:
    2
    Reputations:
    -5
    Нет. print_r($matches);
    Выдает Array ( )
     
  7. 5w17ch3r

    5w17ch3r Member

    Joined:
    1 Dec 2008
    Messages:
    79
    Likes Received:
    11
    Reputations:
    0
    PHP:
    $text "Date: Sun, 05 Feb 2012 08:39:58 GMT
    Location: http://111.ru/maps
    X-Content-Type-Options: nosniff"
    ;

    preg_match("/Location: (.+)/",$text,$arr);
    print_r($arr);
    Array ( [0] => Location: http://111.ru/maps [1] => http://111.ru/maps )

    Все работает...

    PS если символ переноса смущает: preg_match("/Location: (.+)\n?/",$text,$arr);
     
    #19987 5w17ch3r, 5 Feb 2012
    Last edited: 5 Feb 2012
  8. programming

    programming New Member

    Joined:
    26 Aug 2009
    Messages:
    190
    Likes Received:
    3
    Reputations:
    0
    Добрый день.
    Возникла проблема. Нужно с гугл.докс вытащить картинки из пдф документов.
    Написал такой скрипт:
    PHP:
    <?php 
    if( $ch curl_init() ){ 
     
    $url="http://docs.google.com/viewer?url=http%3A%2F%2Fwww.education.gov.yk.ca%2F  pdf%2Fpdf-test.pdf"
            
    // Пишем url страницы 
            
    curl_setopt($ch,CURLOPT_URL$url); 
            
    // Скачанные данные не выводить поток 
            
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); 
            
    curl_setopt($chCURLOPT_SSL_VERIFYPEER0); 
    curl_setopt($chCURLOPT_SSL_VERIFYHOST0); 
    curl_setopt($chCURLOPT_FOLLOWLOCATION1); 
     
    curl_setopt($chCURLOPT_COOKIEFILE"cookie.txt"); //Из какого файла читать 
    curl_setopt($chCURLOPT_COOKIEJAR"cookie.txt"); 
    curl_setopt($chCURLOPT_USERAGENT'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, wie z. B. Gecko) Chrome/13.0.782.215 Safari/525.13.'); 
            
    // Загружаем страницу 
            
    $out curl_exec($ch); 
      
            
    // Выводим страницу на экран 
            //echo $out; 
      
            // Закрываем соединение 
            
    curl_close($ch); 
            
    preg_match_all("/docId\:'(.*?)',numPages\:(\d*?),/si"$out$regs); 
            
    print_r($regs); 
        } 
    $page=$url."&docid=".$regs[1][0]."&a=bi&pagenumber=".$regs[2][0]; 
    echo 
    $page
            
    // Пишем url страницы 
            
    $ch curl_init(); 
            
    curl_setopt($ch,CURLOPT_URL$page); 
            
    // Скачанные данные не выводить поток 
            
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); 
            
    curl_setopt($chCURLOPT_SSL_VERIFYPEER0); 
    curl_setopt($chCURLOPT_SSL_VERIFYHOST0); 
    curl_setopt($chCURLOPT_FOLLOWLOCATION1); 
    curl_setopt($chCURLOPT_COOKIEFILE"cookie.txt"); //Из какого файла читать 
    curl_setopt($chCURLOPT_COOKIEJAR"cookie.txt"); 
    curl_setopt($chCURLOPT_USERAGENT'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, wie z. B. Gecko) Chrome/13.0.782.215 Safari/525.13.'); 
      
            
    // Загружаем страницу 
            
    $out curl_exec($ch); 
      
            
    // Выводим страницу на экран 
            
    echo $out
      
            
    // Закрываем соединение 
            
    curl_close($ch); 
    ?>
    Но он выдаёт 400 Bad request на картинки. Я тестирую на локалхосте и если я ещё не заходил через браузер в этот файл на гугле, то отдаётся 400 ошибка с моего айпи. Но если я один раз зашёл на этот файл, гугл запоминает мой айпи и скрипт уже работает, но вот проблема, я не могу определить куда нужно зайти там скриптом, чтобы гугл записал мой айпи.
     
  9. foma9999

    foma9999 New Member

    Joined:
    5 Jan 2010
    Messages:
    84
    Likes Received:
    2
    Reputations:
    -5
    Блин, пример неудачный. Вот скажем

    Code:
    Expires: Mon, 01 Jan 1990 00:00:00 GMT
    Date: Sun, 05 Feb 2012 15:34:12 GMT
    Location: http://maps.google.ru/maps?client=opera&rls=ru&q=%D0%92%D0%B0%D0%B3%D0%B8%D0%BD%D0%B0,+%D0%A2%D1%8E%D0%BC%D0%B5%D0%BD%D1%81%D0%BA%D0%B0%D1%8F+%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&oe=utf-8&channel=suggest&um=1&ie=UTF-8&hq=&hnear=0x43a54dd8ed2f5765:0xdc61f2402dbc57f,%D0%92%D0%B0%D0%B3%D0%B8%D0%BD%D0%B0&gl=ru&ei=o-grT9TtLsWAOq_08JkO&sa=X&oi=geocode_result&ct=image&resnum=1&ved=0CCUQ8gEwAA
    X-Content-Type-Options: nosniff
    X-Frame-Options: SAMEORIGIN
    X-XSS-Protection: 1; mode=block
    
    
    Спарсить нужно толькто заголовок переадресации.


    UPD:

    Code:
    <?
    function connect($link){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$link);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    $otvet = curl_exec($ch);
    curl_close($ch);
    return  $otvet;
    }
    
    $text = connect('http://tiny.cc/cellh');
    preg_match("/Location: (.+)\n?/",$text,$arr);
    print_r($arr);
    ?>
    
    Вот такой код не работает
     
    #19989 foma9999, 5 Feb 2012
    Last edited: 5 Feb 2012
  10. 5w17ch3r

    5w17ch3r Member

    Joined:
    1 Dec 2008
    Messages:
    79
    Likes Received:
    11
    Reputations:
    0
    а такой вариант не подойдет?
    PHP:
    function connect($link){
    $ch curl_init();
    curl_setopt($chCURLOPT_URL,$link);
    curl_setopt($chCURLOPT_RETURNTRANSFER,true);
    curl_setopt($chCURLOPT_FOLLOWLOCATION,true);
    curl_setopt($chCURLOPT_HEADER1);
    $otvet curl_exec($ch);
    $info curl_getinfo($ch);
    curl_close($ch);
    return 
    $info['url'];
    }

    $var connect("http://tiny.cc/cellh");
    echo 
    $var;
     
    #19990 5w17ch3r, 5 Feb 2012
    Last edited: 5 Feb 2012
  11. Mr.Wekly

    Mr.Wekly New Member

    Joined:
    15 Sep 2011
    Messages:
    61
    Likes Received:
    3
    Reputations:
    5
    Подскажите статьи для новичков по php с иллюстрациями.
    P.S в php полный 0
     
  12. Skofield

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

    Joined:
    27 Aug 2008
    Messages:
    952
    Likes Received:
    318
    Reputations:
    52
    Mr.Wekly http://phpfaq.ru/php5.ru/study/chapter1.html
     
  13. Mr.Wekly

    Mr.Wekly New Member

    Joined:
    15 Sep 2011
    Messages:
    61
    Likes Received:
    3
    Reputations:
    5
    У меня 3g модем, не получается сдлать первую команду... "telenet ya.ru 80"
    PHP:
    Microsoft Windows [Version 6.1.7601] (cКорпорация Майкрософт Tabulorasa TEAM2009-2011. Все права защищеныC:\Users\Admin>telenet ya.ru 80 "telenet" не является внутренней или внешней командойисполняемой программой или пакетным файломC:\Users\Admin>
     
  14. FindeR

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

    Joined:
    15 Nov 2006
    Messages:
    623
    Likes Received:
    138
    Reputations:
    20
    telnet ya.ru 80
     
  15. Compton

    Compton Member

    Joined:
    31 Jan 2010
    Messages:
    290
    Likes Received:
    25
    Reputations:
    0
    где взять актуальный геоип? на оф.сайте 403 ошибка
     
  16. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,761
    Likes Received:
    816
    Reputations:
    230
    Не наблюдаю 403
    http://www.maxmind.com/app/geoip_country
     
    _________________________
  17. Mr.Wekly

    Mr.Wekly New Member

    Joined:
    15 Sep 2011
    Messages:
    61
    Likes Received:
    3
    Reputations:
    5
    PHP:
    Microsoft Windows [Version 6.1.7601] (cКорпорация Майкрософт Tabulorasa TEAM2009-2011. Все права защищеныC:\Users\Admin>telnet ya.ru 80 "telnet" не является внутренней или внешней командойисполняемой программой или пакетным файломC:\Users\Admin>telnet "telnet" не является внутренней или внешней командойисполняемой программой или пакетным файломC:\Users\Admin>
    Тоже самое =(
     
  18. 5w17ch3r

    5w17ch3r Member

    Joined:
    1 Dec 2008
    Messages:
    79
    Likes Received:
    11
    Reputations:
    0
    Mr.Wekly, пропускай, telnet в данном случае особой роли не играет.

    Вообще лучше книжкой обзавестись :)
     
    #19998 5w17ch3r, 6 Feb 2012
    Last edited: 6 Feb 2012
  19. spiderbuber

    spiderbuber New Member

    Joined:
    20 Oct 2010
    Messages:
    63
    Likes Received:
    0
    Reputations:
    0
    Как проще делать экранирование?

    В php коде нужно по клику втавлять php (сорри за масло масленое) и потом исполнять его.

    PHP:
    <?php  
    echo('<form action="" method="post" name="form">');
    echo(
    '<textarea name="eval" rows=20 cols=120></textarea><br/><br/>
    <a href="#" onclick="insert(\'$masiv = array\(\')">1</a><br/>
    <a href="#" onclick="insert(\'123\')">2</a><br/>
    </form>
    <script language="JavaScript">function insert(txt) { form.eval.value+=""+txt+""; form.eval.focus(); } </script>'
    );
    ?> 
    Запарился с экранированием.. Не могу экранировать одинарную кавычку..
    Например, хочу вставить это:
    PHP:
     $masiv = array('../robots.txt''../../config.php');
    foreach (
    $masiv as $readme) {
    if (
    file_exists($readme)) { echo $readme." - "; print substr(sprintf('%o'fileperms($readme)), -4); readfile($readme); } 
    else { echo 
    "No file - $readme | "; }} 
    Кода вставлять нужно очень много.. Как сделать проще?
     
  20. Compton

    Compton Member

    Joined:
    31 Jan 2010
    Messages:
    290
    Likes Received:
    25
    Reputations:
    0
    я про это
     
Loading...
Thread Status:
Not open for further replies.