Помогите составить регулярку

Тема в разделе "Регулярные выражения", создана пользователем askarbin, 29 мар 2010.

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

    askarbin

    Регистр.:
    31 мар 2009
    Сообщения:
    293
    Симпатии:
    36
    Подскажите пожалуйста как составить регулярку для того, чтобы парсить значения город -> температура? со страницы http://sinoptik.org.ua/weather/black-sea/
     
  2. zetar

    zetar

    Регистр.:
    18 май 2007
    Сообщения:
    497
    Симпатии:
    348
    Код:
    php примерно так
    "~<tr class=\"c1\"><td>(.*)<\/td><td align=\"center\">(\d{1-2}\.\d{1})\&deg\;<\/td><\/tr>~Usi"
    
    
     
    askarbin нравится это.
  3. SimpleWarrior

    SimpleWarrior Писатель

    Регистр.:
    25 дек 2009
    Сообщения:
    9
    Симпатии:
    1
    Попробуй вот такую
    PHP:
    '@<tr[^>]+c\d"><td>(.+)</td><td[^>]+>(.+)</td>@Ui'
     
    askarbin нравится это.
  4. askarbin

    askarbin

    Регистр.:
    31 мар 2009
    Сообщения:
    293
    Симпатии:
    36
    Делаю так ничего не выводит:
    PHP:
    <?php
    $file 
    file_get_contents("http://sinoptik.org.ua/weather/black-sea/index.php"); 
    $file str_replace("\r\n","",$file); 
    //print_r($file); 
    $k preg_match_all('@<tr[^>]+c\d"><td>(.+)</td><td[^>]+>(.+)</td>@Ui'$file$res); 
    for (
    $i 0$i $k$i++){ 
    echo 
    $res[1][$i];     

    ?>
    Делаю так:
    PHP:
    <?php
    $file 
    file_get_contents("http://sinoptik.org.ua/weather/black-sea/index.php"); 
    $file str_replace("\r\n","",$file); 
    print_r($file); 
    $k preg_match_all('@<tr[^>]+c\d"><td>(.+)</td><td[^>]+>(.+)</td>@Ui'$file$res); 
    for (
    $i 0$i $k$i++){ 
    echo 
    $res[1][$i];     

    ?>
    Получаю фразу: Программист, это - такой человек, который сначала много думает, чтобы потом ничего не делать!

    Это как объяснить можно?
     
  5. zetar

    zetar

    Регистр.:
    18 май 2007
    Сообщения:
    497
    Симпатии:
    348
    там защита от парсинга похоже
    надо делать через curl эмулироватьь броузер полностью
     
  6. askarbin

    askarbin

    Регистр.:
    31 мар 2009
    Сообщения:
    293
    Симпатии:
    36
    хм, начал парсить у них через curl. так теперь эти ребята стали рисовать изображение средствами php.
    их упорство меня поражает)
    Подскажите, тогда, как составить регулярку, чтобы спарсить температуру воды с gismeteo со страницы: http://www.gismeteo.ua/city/daily/5002/
     
  7. Alix

    Alix

    Регистр.:
    27 янв 2008
    Сообщения:
    234
    Симпатии:
    84
    PHP:
    preg_match('/class="jAjax ico_help png"><\/a>(.*?)<\/p>/'$page$match)
     
    askarbin нравится это.
  8. askarbin

    askarbin

    Регистр.:
    31 мар 2009
    Сообщения:
    293
    Симпатии:
    36
    А подскажите, как сделать так, чтобы в массив $match поступало только значение температуры - (.*?) ?
     
  9. Alix

    Alix

    Регистр.:
    27 янв 2008
    Сообщения:
    234
    Симпатии:
    84
    Если речь идет о регэкспе, приведенном мной выше - то никак. В результирующем массиве всегда будет полное совпадение.

    Можно поинтерисоваться - а зачем? Ведь ничто не мешает передать полученное значение $match[1] в другой массив либо переменную, проверить на существование и тд.
     
  10. askarbin

    askarbin

    Регистр.:
    31 мар 2009
    Сообщения:
    293
    Симпатии:
    36
    В общем-то так я и сделал, а поинтересовался только для того, чтобы меньше операций плодить, т.к. у меня довольно внушительный список страниц, с которых нужно эту информацию парсить
     
Статус темы:
Закрыта.