... но у меня не получается есть текст (html-код): <tr> <td class="fp_title"><div><a href="en_services_fuel_prices_country?id=RUS">Russian Federation</a></div></td> <td class="fp_number"><div>RUB</div></td> <td class="fp_number"><div>31.21</div></td> <td class="fp_number"><div>34.40</div></td> <td class="fp_number"><div>31.92</div></td> </tr> Задача собрать в массив значения из текста, которые выделены синим. Пишу код: Код (Text): $fh = @fopen('http://www.url.ru','r'); if($fh) { while(!feof($fh)) @$text.=fread($fh, 4096); fclose($fh); // echo $text; preg_match ("# <tr> <td class=\"fp_title_color\"><div><a href=\"en_services_fuel_prices_country?id=(.*?)\">(.*?)</a></div></td> <td class=\"fp_number_color\"><div>(.*?)</div></td> <td class=\"fp_number_color\"><div>(.*?)</div></td> <td class=\"fp_number_color\"><div>(.*?)</div></td> <td class=\"fp_number_color\"><div>(.*?)</div></td> </tr> #i", $text, $regs); echo "<pre>"; print_r($regs); } else echo "'error'"; Результат: Array ( ) Т.е. страница значениями не испорчена Подскажите правильный код, где ошибка? Заранее спасибо!
Код (PHP): preg_match('#id=(\w*)">(.*)<.*<div>(.*)</div>.*<div>(.*)</div>.*<div>(.*)</div>.*<div>(.*)</div>#iUs', $text, $regs);
Спасибо! Не плохо, но не мовсем ожидаемый результат: id=LV">Latvia</a></div></td> <td class="fp_number_color"><div>LVL</div></td> <td class="fp_number_color"><div>0.947</div></td> <td class="fp_number_color"><div>0.962</div></td> <td class="fp_number_color"><div>0.937</div> На значения не обращайте внимания, сейчас это не принципиально, главное избавиться от тэгов.
Что значит не ожидаемый? В первом случае выводит всё, что подсветили синим Код (Text): Array( [1] => RUS [2] => Russian Federation [3] => RUB [4] => 31.21 [5] => 34.40 [6] => 31.92 ) Во втором случае с id=LV">Latvia</a></div></td> <td class="fp_number_color"><div>LVL</div></td> <td class="fp_number_color"><div>0.947</div></td> <td class="fp_number_color"><div>0.962</div></td> <td class="fp_number_color"><div>0.937</div> выводит Код (Text): Array( [1] => LV [2] => Latvia [3] => LVL [4] => 0.947 [5] => 0.962 [6] => 0.937 ) Что ещё ожидается то? Теги не выводит, значения в исходном тексте могут быть любые, регулярке это не важно. Так что не понятно, что хотите.
Вот что выводится: id=LV">Latvia LVL 0.947 0.962 0.937 При просмотре HTML-кода: Код (Text): id=LV">Latvia</a></div></td> <td class="fp_number_color"><div>LVL</div></td> <td class="fp_number_color"><div>0.947</div></td> <td class="fp_number_color"><div>0.962</div></td> <td class="fp_number_color"><div>0.937</div> На значения действительно не надо обращать внимания. в любом случае результата: Код (Text): Array( [1] => LV [2] => Latvia [3] => LVL [4] => 0.947 [5] => 0.962 [6] => 0.937 ) не наблюдается Добавлено спустя 12 минут 23 секунды: Все! Разобрался! Надо кавычки заслешить: Код (PHP): preg_match('#id=(\w*)\">(.*)<.*<div>(.*)</div>.*<div>(.*)</div>.*<div>(.*)</div>.*<div>(.*)</div>#iUs', $text, $regs); Спасибо!