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

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

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

    FreeNeDiX New Member

    Joined:
    1 Jun 2007
    Messages:
    15
    Likes Received:
    0
    Reputations:
    0
    Приф всем, вот такой вопрос...
    Реально ли сделать грабер контента с html паги, ну пример странички HTML:
    HTML:
    <html>
    <head>
    <meta http-equiv="Content-Language" content="ru">
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    <title>Новость</title>
    </head>
    <body>
    <table cellpadding="0" cellspacing="0" width="644">
         <tr>
              <td height="55" width="644" colspan="3" valign="top"><b><font size="7">
              Супер сайт</font></b></td>
         </tr>
         <tr>
              <td height="253" width="90" valign="top">Навигация<p>1</p>
              <p>2</p>
              <p>3</p>
              <p>4</p>
              <p>5</td>
              <td height="253" width="424" valign="top">
              <p align="left"><b>Новости:</b></p>
              <p>Итак, по последним данным нам стало....</td>
              <td height="253" width="130" valign="top">ССЫЛКИ<p>&nbsp;</p>
              <p>1</p>
              <p>2</p>
              <p>3</p>
              <p>4</p>
              <p>&nbsp;</td>
         </tr>
         <tr>
              <td height="59" width="644" colspan="3" valign="top">
              <p align="center">копирайт</td>
         </tr>
    </table>
    </body>
    </html>
    
    Вот полный код страницы, можно ли на другом сайте каким-либо образом сграбить все что относится к этому куску кода:

    ...
    <p align="left"><b>Новости:</b></p>
    <p>Итак, по последним данным нам стало....
    ...
    Можно или нет?
    Если да, то подскажите каким образом.
     
    #181 FreeNeDiX, 1 Jul 2007
    Last edited by a moderator: 1 Jul 2007
  2. GoreMaster

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

    Joined:
    28 May 2007
    Messages:
    119
    Likes Received:
    32
    Reputations:
    4
    Regular Expressions используй и будет тебе счастье
    -------------------------------------------------
    PHP:
    $pattern '/(<p align="left"><b>Новости:<\/b><\/p><p>)(.*)(<\/td>)/'
    preg_match($pattern,$str,$cout)
    -------------------------------------------------------------------------
    в $cout[2] будет лежать "Итак, по последним данным нам стало...."
    З.Ы.:РегЭксп примитивный,думаю профи подправят, но идею изложил
     
  3. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    FreeNeDiX, используй теги [.php], [.html]
    PHP:
    $pattern '#<p align="left"><b>Новости:</b></p><p>(.*)</td>#is'
    preg_match($pattern,$str,$cout)
     
    #183 banned, 1 Jul 2007
    Last edited: 1 Jul 2007
  4. spamoney

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

    Joined:
    26 Dec 2006
    Messages:
    120
    Likes Received:
    7
    Reputations:
    1
    В общем, нужен скрипт, который бы архивировал папки на сервере в .zip или .gzip, нашел такой скрипт
    http://slil.ru/24577297
    , но он работает почему то только на локалке, а на сервере не хочет :( наверно из-за того что там safe mode: on. Может у кого-нибудь есть рабочий, что б в safe mode работал?
     
  5. Kridan

    Kridan Member

    Joined:
    2 Jun 2007
    Messages:
    24
    Likes Received:
    8
    Reputations:
    0
    PHP:
    $sh file_get_contents("http://www.site.ru/news.html"False);
    $sh chop($sh);
    Только "allow_url_open" должно быть "on".
     
  6. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    spamoney, уже не раз говорили, что скачивать никто ничего не будет..
    Выкладывай скрипт сюда!
     
  7. spamoney

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

    Joined:
    26 Dec 2006
    Messages:
    120
    Likes Received:
    7
    Reputations:
    1
    Там более 200 кб php кода, выложить не получается, форум выдает ошибку:

    Может тогда кто-нибудь сможет написать скрипт для архивирования папок на сервере при включенном safe mode?
     
  8. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    А ты попробуй поставить 2 символа после закрытия тега [./php]
    Ведь по-русски напсиано
     
  9. FreeNeDiX

    FreeNeDiX New Member

    Joined:
    1 Jun 2007
    Messages:
    15
    Likes Received:
    0
    Reputations:
    0
    Спасиб парни, буду тестить.
     
  10. FreeNeDiX

    FreeNeDiX New Member

    Joined:
    1 Jun 2007
    Messages:
    15
    Likes Received:
    0
    Reputations:
    0
    Хмм, регулярные выражения значит, в принципе все должно работать, скажите что не так?

    <?php
    $url = "http://site.nu/news.html";
    $content = file_get_contents($url);
    $pattern = '#<p align="left"><b>Новости:</b></p><p>(.*)</td>#is';
    preg_match($pattern,$content,$out);
    print($out);
    ?>

    В итоге вместо нужной новости я вижу надпись Array.
    Что не так?
     
  11. Kridan

    Kridan Member

    Joined:
    2 Jun 2007
    Messages:
    24
    Likes Received:
    8
    Reputations:
    0
    Попробуй
    print($out[0];
     
  12. FreeNeDiX

    FreeNeDiX New Member

    Joined:
    1 Jun 2007
    Messages:
    15
    Likes Received:
    0
    Reputations:
    0
    print_r($out); пробовал, не работает, точнее вместо Array, выводится Array ( ).

    Не print($out[0];
    а print($out[0]);, иначе ошибка...хотя все равно не работает и высвечивается...точнее ничего не выводится на экран. Мистика...
     
  13. blaga

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

    Joined:
    23 Mar 2006
    Messages:
    884
    Likes Received:
    273
    Reputations:
    106
    если $out массив то таким макаром он и не выведет. Почитайте про обход массивов.
     
    1 person likes this.
  14. hhover

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

    Joined:
    21 May 2007
    Messages:
    60
    Likes Received:
    36
    Reputations:
    11
    Тебе дали нерабочую регулярку. Но тем не менее проверь, действительно ли в переменной $content содержится нужная страница.

    И нужно было проявить минимум смекалки, чтобы догодаться, что если переменная пустая, когда при echo $variable; ничего не выводится. Я не знаю кем надо быть, чтобы по этому поводу вопросы задавать. Аналогично по функции print_r. Только тут еще надо хотя-бы слегка быть знакомым с понятием массив.

    PHP:
    $pattern "/<p\salign\=\"left\"\>\<b\>(.+?)\<\/b\>\<\/p\>\s+\<p\>(.+?)\<\/td\>/is";
     
  15. FreeNeDiX

    FreeNeDiX New Member

    Joined:
    1 Jun 2007
    Messages:
    15
    Likes Received:
    0
    Reputations:
    0
    Да, дейсвительно, спасибо тебе blaga. Вот полностью рабочий код:

    <?php
    $url = "http://site.nu/news.html";
    $content = file_get_contents($url);
    $pattern = "@<td height=\"40\" valign=\"top\"><b>Новость:</b><p>(.*)</td>@isU";
    preg_match_all($pattern, $content, $out);
    foreach($out[0] as $info)
    {
    echo("$info");
    }
    ?>
     
  16. DIAgen

    DIAgen Banned Life!

    Joined:
    2 May 2006
    Messages:
    1,055
    Likes Received:
    376
    Reputations:
    460
    Суть проблемы в том, что есть скрипт работает с определенным файлом, считывание и запись в него, как возможно заблокировать как нибудь допуск к этому файлу пока работает это скрипт, и от повторной запуски данного скрипта?
     
  17. Ni0x

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

    Joined:
    27 Aug 2006
    Messages:
    338
    Likes Received:
    157
    Reputations:
    37
    DIAgen, тебе нужна функция flock()
    if($fp=fopen($filename,'w') && flock($fp,LOCK_EX))
    /*LOCK_EX - блокировка
    взаимоисключающего доступа(используется для записи)*/
    {
    $rs=fwrite($fp,$content);
    flock($fp, LOCK_UN); //LOCK_UN снять блок
    fclose($fp);
    return $rs;
    }

    для чтения используй LOCK_SH
     
    #197 Ni0x, 3 Jul 2007
    Last edited: 3 Jul 2007
  18. Ska

    Ska New Member

    Joined:
    30 Mar 2007
    Messages:
    4
    Likes Received:
    2
    Reputations:
    0
    У меня такой вопрос я не могу подключить библиотеку php_sockets.dll(. Вроде всё делал так же как и при подключении библиотеки для работы с скуль( но скуль работает а это нет). За рание благодарен.
     
  19. n1†R0x

    n1†R0x Elder - Старейшина

    Joined:
    20 Jan 2007
    Messages:
    728
    Likes Received:
    376
    Reputations:
    235
    куда ты ставил? на локалхост? если да, то как?

    я ставил так: скопировал .dll в каталог %WINDIR%\SYSTEM и раскомментировал строчку
    ;extension=php_sockets.dll //string #587
    в php.ini (раздел Динамические Загружаемые Расширения)
     
  20. Ska

    Ska New Member

    Joined:
    30 Mar 2007
    Messages:
    4
    Likes Received:
    2
    Reputations:
    0
    n1†R0x да вроде всё так и делал. Ettee правильно указан.
     
Thread Status:
Not open for further replies.