За последние 24 часа нас посетили 22448 программистов и 1009 роботов. Сейчас ищут 646 программистов ...

Вырезать текст

Тема в разделе "Прочие вопросы по PHP", создана пользователем KPG, 8 фев 2006.

  1. KPG

    KPG Активный пользователь

    С нами с:
    8 фев 2006
    Сообщения:
    14
    Симпатии:
    0
    Адрес:
    Челябинский
    Подскажите пожалуйста, правильно ли я делаю?
    Требуется вырезать текст из HTML страницы, возвращаемой по запросу.

    Собственно вот код:

    $url = "http://www.blabla.ru/";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_USERPWD, "login:password");
    $result = strip_tags (curl_exec($ch));
    $pos = strpos($result, " MAIN");
    $result = substr($result, 0, $pos);
    curl_close($ch);
    echo $result;


    Результатом такого запроса является HTML страница с данными.
    Моим кодом я получаю данные до слова "MAIN", остальное отбрасывается за ненадобностью. Может можно это сделать как-то более эффективно?
     
  2. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    регуляркой выкуси? напиши точнее что нужно?
     
  3. KPG

    KPG Активный пользователь

    С нами с:
    8 фев 2006
    Сообщения:
    14
    Симпатии:
    0
    Адрес:
    Челябинский
    Да, в общем-то, всё работает, просто думал - может я не правильно это реализовал в смысле корректности кода.

    Хотя, вот уточню:
    Из всего получаемого текста интересует лишь "Сумма баланса"
    В реальности строка выглядит примерно так:
    начало текста ..... Current balance: 145.61 MAIN ..... конец текста

    Т.е. меня интересует именно сумма баланса.
    Вот теперь наверняка понятней.
     
  4. KPG

    KPG Активный пользователь

    С нами с:
    8 фев 2006
    Сообщения:
    14
    Симпатии:
    0
    Адрес:
    Челябинский
    Задачу решил таким способом:

    $url = "http://www.blabla.ru/";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_USERPWD, "login:password");
    $result = strip_tags (curl_exec($ch));
    curl_close($ch);
    $result = preg_match('/(\d{1,3})\.(\d{1,2})/',$result,$found);
    print_r($found[0]);

    В результате получаю именно то, что хотел:
    145.61
     
  5. Zero

    Zero Guest

    KPG
    При включенной опции URLWRAPPER_ALLOW (както так:)) можно делать такую штуку в одну строчку:
    Код (Text):
    1.  
    2. if( preg_match ("[ЗДЕСЬ_РЕГЭКСП]", implode( file("http://blabla.ru") ), $matches) ) $cut = $matches[0];
     
  6. KPG

    KPG Активный пользователь

    С нами с:
    8 фев 2006
    Сообщения:
    14
    Симпатии:
    0
    Адрес:
    Челябинский
    Т.е. предлагается обойтись без curl ?
    А как тогда быть с авторизацией?
     
  7. Kolo

    Kolo Активный пользователь

    С нами с:
    3 фев 2006
    Сообщения:
    51
    Симпатии:
    0
    Адрес:
    SPb
    Попробуй file("http://login:pass@domain.ru").
     
  8. KPG

    KPG Активный пользователь

    С нами с:
    8 фев 2006
    Сообщения:
    14
    Симпатии:
    0
    Адрес:
    Челябинский
    Это конечно будет работать. В связи с этим следующий вопрос:
    Насколько безопасна передача пароля
    таким способом:
    http://login:pass@domain.ru

    и таким:
    curl_setopt($ch, CURLOPT_USERPWD, "login:password")

    Какой способ предпочтительней?
     
  9. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    KPG
    в любом случае пароль передается открыто. не парься.
     
  10. KPG

    KPG Активный пользователь

    С нами с:
    8 фев 2006
    Сообщения:
    14
    Симпатии:
    0
    Адрес:
    Челябинский
    :) Не буду!
     
  11. Zero

    Zero Guest

    440hz
    KPG
    в любом случае все на уровне серверов :)
     
  12. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    Zero
    это ты о чем? можно поподробнее?