Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Как пропарсить страницу www.alfa-forex.ru?

Сообщения:  [1-8] 

 
 автор: Trianon   (25.04.2007 в 09:43)   письмо автору
 
   для: vasso_m   (25.04.2007 в 02:16)
 

Знаки $ я выбрал в качестве ограничителей шаблона регулярного выражения. preg-движку такие требуются. Согласен, $ - неудобоваримо.
Модификатор i - нечувствительность к регистру символов, Модификатор m - обработка нескольких строк как одной.
Фактически, модификаторы добавлены по привычке - ни тот, ни другой не оказывают существенного влияния на разбор.

В самом шаблоне используются следующие классы символов:
[\s]+ - spaces - пробельные символы
[\w]+ - words - слова
[\d]+ - digits - цифры. де факто - целые числа
[\d\.]+ - digits - цифры и точка . де факто - вещественные числа
Остальное - литералы и захватывающие скобки. Вроде всё, никаких особых премудростей.

UPD. Только что проверил, такой шаблон также справляется:

 $ptn = '|<tr>[\s]+<td id="([\w]+)">([\w]+)/([\w]+)</td>[\s]+<td>([\d\.]+)</td>[\s]+<td>([\d\.]+)</td>[\s]+</tr>|';

   
 
 автор: vasso_m   (25.04.2007 в 02:16)   письмо автору
 
   для: Trianon   (24.04.2007 в 17:40)
 

Спасибо, код работает, но хотелось бы понять, как именно.
Если есть время, объясните пожалуйста. Больше всего интересно в $ptn, что это за $ в начале строки и $im в конце.

   
 
 автор: Trianon   (24.04.2007 в 17:40)   письмо автору
 
   для: vasso_m   (24.04.2007 в 17:00)
 


<?php
 $text 
file_get_contents('http://www.alfa-forex.ru/_rates.html');

 
$ptn '$<tr>[\s]+<td id="([\w]+)">([\w]+)/([\w]+)</td>[\s]+<td>([\d\.]+)</td>[\s]+<td>([\d\.]+)</td>[\s]+</tr>$im';
 
preg_match_all($ptn$text$m1PREG_SET_ORDER);
 foreach(
$m1 as $key => $val) unset($m1[$key][0]);

 
$ptn2 '$<td colspan="3" align="right">([\d]+\.[\d]+\.[\d]+)[\s]+([\d]+\:[\d]+)[\s]+([\S]+)[\s]$im';
 
preg_match($ptn2$text$m2);
 unset(
$m2[0]);

 echo 
'<pre>'print_r($m1); print_r($m2);
?>

   
 
 автор: vasso_m   (24.04.2007 в 17:00)   письмо автору
 
   для: cheops   (24.04.2007 в 13:54)
 

Нужно получить котировки, сами значения из таблицы. например в массив.
Например,
$arr[] = ( "name" => "EUR/USD",
"bid" => "1.3582",
"offer" => " 1.3585"
);

   
 
 автор: cheops   (24.04.2007 в 13:54)   письмо автору
 
   для: vasso_m   (24.04.2007 в 09:10)
 

Данные какого рода нужны?

   
 
 автор: bronenos   (24.04.2007 в 13:31)   письмо автору
 
   для: vasso_m   (24.04.2007 в 13:19)
 

зайдите в форум регулярок

   
 
 автор: vasso_m   (24.04.2007 в 13:19)   письмо автору
 
   для: vasso_m   (24.04.2007 в 09:10)
 

кто знает?

   
 
 автор: vasso_m   (24.04.2007 в 09:10)   письмо автору
 
 

У меня есть страница с котировками http://www.alfa-forex.ru/_rates.html. Мне надо выбрать с нее данные и передать в массив.
Данные я получил, преобразовал их в строку, а как дальше выбрать значения - не понимаю


$fcontents = file ('http://www.alfa-forex.ru/_rates.html');

for ( $i = 0; $i < count($fcontents); $i++ )
{
    $fcontents[$i] = trim($fcontents[$i]);
}
$str = implode("\n", $fcontents);


Мне надо выдрать данные из html кода

   

Сообщения:  [1-8] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования