Подскажите пожалуйста, почему не работает регулярка?.. Надо достать данные, находяшиеся между двумя тегами. Пример HTML: <font color=#aeaeae>1116.88</font> Регулярку такую написал: Код (Text): "/(?=<font color=#aeaeae>)*\d+.\d+(?=<\/font>)/" Выдается ошибка - Compilation failed: nothing to repeat at offset В чем проблема?
PHP: <?php # 440hz zone $text = '<font color=#aeaeae>1116.88</font>'; $pat = '/<font color=#aeaeae>(\d+\.\d+)<\/font>/i'; if(preg_match_all($pat,$text,$matches)) { print_r($matches); } ?> Код (Text): hosting(440hz):~/tmp$>php -q reg.php Array ( [0] => Array ( [0] => <font color=#aeaeae>1116.88</font> ) [1] => Array ( [0] => 1116.88 ) )
Почему тогда так не работает? PHP: <? $matches = preg_match_all("/<font color=#aeaeae>(\d+\.\d+)<\/font>/i", file_get_contents('http://cbr.ru'), $array, PREG_PATTERN_ORDER); print_r($array); ?>
не надо тут мне ЛЯЛЯ... Код (Text): hosting(root):/usr/home/440hz#>curl -s "http://cbr.ru" | grep color <td width="100%" bgcolor="#4b5b65"><img src="/images/temp.gif" width="1" height="1"></td> <td width="100%" bgcolor="#4b5b65"><img src="/images/temp.gif" width="1" height="1"></td> <td width="100%" bgcolor="#4b5b65"><img src="/images/temp.gif" width="1" height="1"></td> <td width="100%" bgcolor="#4b5b65"><img src="/images/temp.gif" width="1" height="1"></td> <td width="100%" bgcolor="#4b5b65"><img src="/images/temp.gif" width="1" height="1"></td> <td width="100%" bgcolor="#4b5b65"><img src="/images/temp.gif" width="1" height="1"></td> <td width="100%" bgcolor="#4b5b65"><img src="/images/temp.gif" width="1" height="1"></td> <td width="100%" bgcolor="#4b5b65"><img src="/images/temp.gif" width="1" height="1"></td> <td width="100%" bgcolor="#4b5b65"><img src="/images/temp.gif" width="1" height="1"></td> <td bgcolor="#d5d9db" valign="top"><img src="/images/temp.gif" width="5" height="1"></td> <td height="1" bgcolor="#4b5b65" colspan="3"><img src="/images/temp.gif" width="1" height="1"></td> hosting(root):/usr/home/440hz#>curl -s "http://cbr.ru" | grep font hosting(root):/usr/home/440hz#> видно что тегов font НЕТУ, а если ты хочешь таскать данные из левой колонки, то они java генератся как пить дать.
5 минут поиска в инете... "кукрсы валют RSS" PHP: <?php // 2008 (c) 440hz // получить курсы валют $url = 'http://rss.sampo.ru/rss.php?mode=kurs'; $html = file_get_contents($url); if($html === false) { print("Не могу получить страницу [{$url}]"); exit(); } $pat = '/<tr><td>(.*)<\/td><td>(.*)<\/td><\/tr>/Ui'; if(preg_match_all($pat,$html,$match)) { foreach($match[1] as $key => $name) { $name = str_replace(' ','',$name); $val = $match[2][$key]; print("[$name] - [$val]"); print("\n"); } } ?> Код (Text): hosting(root):/usr/home/440hz/tmp#>php kurs.php [Австралийский доллар] - [21,5246] [Фунт стерлингов Соединенного Королевства] - [49,0114] [Белорусских рублей] - [11,3897] [Датских крон] - [48,4710] [Доллар США] - [24,5462] [Евро] - [35,9332] [Исландских крон] - [39,2865] [Казахских тенге] - [20,3492] [Канадский доллар] - [25,0038] [Китайских юаней Жэньминьби] - [33,6038] [Норвежских крон] - [45,3971] [СДР] - [38,7457] [Сингапурский доллар] - [16,9694] [Новая турецкая лира] - [20,9367] [Украинских гривен] - [48,2357] [Шведских крон] - [38,3379] [Швейцарский франк] - [21,7879] [Японских йен] - [21,8441] p.s. и кто теперь папочка? =)
По поводу http://cbr.ru Пару часов назад делал: http://www.specialist.ru/news/Publicati ... vices.aspx там уже готовый класс есть. Единственное условие - надо просить хостера включить поддержку soap. В принципе сделал за 15 минут, вместе с чтением статьи и обсуждением с заказчиком, в каком виде ему это нужно.
Можно так же быстро составить нужную регулярку, используя удобный конструктор - http://www.pcre.ru/eval/ :wink:
И снова эти курси валют .... Хотел получить курси валют с данного сайта - http://tables.finance.ua/ru/currency/official Никак не получаеться. Вот мой код: PHP: $html = ""; $pattern = '/<td align="center">(.*)<\/td><td align="center">(.*)<\/td><td>(.*)<\/td><td align="left">(.*)<\/td><td nowrap="nowrap">(.*)<\/td><td nowrap="nowrap">(.*)<\/td><td nowrap="nowrap">(.*)<\/td>/i'; $html .= file_get_contents("http://tables.finance.ua/ua/currency/official"); foreach($fin_array as $name) { $val1 = $name[1]; $val2 = $name[2]; $val3 = $name[3]; $val4 = $name[4]; $val5 = $name[5]; $val5 = $name[6]; $val5 = $name[7]; print_r($fin_array); print("[$val1] - [$val2] - [$val3] - [$val4] - [$val5] - [$val6] - [$val7]"); print("<br>"); } Помогите пожалуйста, очень прошу ..... Заранее благодарен.
$pattern = '/<td align="center">(.*)<\/td><td align="center">(.*)<\/td><td>(.*)<\/td><td align="left">(.*)<\/td><td nowrap="nowrap">(.*)<\/td><td nowrap="nowrap">(.*)<\/td><td nowrap="nowrap">(.*)<\/td>/is'; может так...
Вот пример строки для парсинга(елементи которие нужно полусить в массив виделени жирним): P.S. Может проблема в том что подстроки которие ожидаються к виводу содержат HTML теги?