|
|
|
| Прощу прощения, если подобная тема уже поднималась... Задача стоит такая - нужно распарсить 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 просто не выполняется - скрипт просто тихо хавершает работу без всяких ошибок.
С регулярными выражениями я начал только седня разбираться, так что подозреваю, что что-то перемудрил. но вто что...
Буду оченб благодарен за помощь. | |
|
|
|
|
|
|
|
для: 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);
?>
|
| |
|
|
|