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

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

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Помогите с регулярным выржением для парсинга
 
 автор: Evgeny   (14.12.2008 в 13:51)   письмо автору
 
 

Прощу прощения, если подобная тема уже поднималась... Задача стоит такая - нужно распарсить HTML вот такой структуры


<tr>
 <td class='prop_name' width='25%'>Вес товара</td>
 <td class='prop_val'  width='75%' colspan='2'>21.4 кг</td></tr>
<tr>
 <td class='prop_name' width='25%'>Цена товара</td>
 <td class='prop_val'  width='75%' colspan='2'>2112.4</td>
</tr>


и извлечь из него почередно все названия параметров товара (TD имеют класс prop_name) и все значения параметров товара (TD имеют класс prop_val).
Пробую использовать такое выражение (для поиска названий параметров)

/<td(?:.)+?[^>]*(?:prop_name)(?:.)+?[^>]*>(.*?)<\/td>/


На небольших кусках текста это выражение с задачей вроде бы справляется, а когда начинаю тестить на реальных данных - примерно килибоайт 25 текст, то функция preg_match_all просто не выполняется - скрипт просто тихо хавершает работу без всяких ошибок.
С регулярными выражениями я начал только седня разбираться, так что подозреваю, что что-то перемудрил. но вто что...
Буду оченб благодарен за помощь.

  Ответить  
 
 автор: AcidTrash   (14.12.2008 в 21:21)   письмо автору
 
   для: Evgeny   (14.12.2008 в 13:51)
 

<pre>
<?php
$text
="<tr>
 <td class='prop_name' width='25%'>Вес товара</td>
 <td class='prop_val'  width='75%' colspan='2'>21.4 кг</td></tr>
<tr>
 <td class='prop_name' width='25%'>Цена товара</td>
 <td class='prop_val'  width='75%' colspan='2'>2112.4</td>
</tr>"
;
preg_match_all("#<td class='prop_name'[^>]+>(.+?)</td>.*?<td class='prop_val'[^>]+>(.+?)</td>#s",$text,$out);
unset(
$out[0]);
print_r($out);
?>

  Ответить  
Rambler's Top100
вверх

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