sundance2001
Новичок
Еще вопросик по регулярным выражениям
Доброй ночи! Все борюсь с регулярными выражениями. Прочитал несколько мануалов - все стало гораздо яснее, но не хватает практики.
Столкнулся с проблемой. Есть HTML файл. В нем приведенный фрагмент повторяется несколько раз подряд.
нужно обработать этот фрагмент, получив ТРИ параметра: код товара из product_area_100299 (лишь цифры), название товара (в данном случае это COOL PEN) и его цену ($9.00).
Подскажите, уместны ли тут регулярные выражения и как лучше в данном случае ими пользоваться?
Я начал делать паттерны по частям:
Каждый из паттернов соответствует искомому параметру.
Вопрос в следующем: не лучше ли сделать ОДИН большой паттерн, чтобы он выдавал сразу три искомых параметра? Я пытался соединить их с помощью .*, но ничего не получилось.
Подскажите, как правильнее поступить? Если лучше все делать одним паттерном, то помогите, пожалуйста, его составить - у меня не получается.
Спасибо.
Доброй ночи! Все борюсь с регулярными выражениями. Прочитал несколько мануалов - все стало гораздо яснее, но не хватает практики.
Столкнулся с проблемой. Есть HTML файл. В нем приведенный фрагмент повторяется несколько раз подряд.
PHP:
<td width='109' class=thumbtext><!--table name="product_area_100299" border="0" cellspacing="0" cellpadding="0" onmouseout="hidQuickLook();"-->
<table name="product_area_100299" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><div>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td class=thumbborderbg><img src="/images/en_US/global/globalgraphics/spacer01.gif" width="1" height="1" border="0"></td>
<td class=thumbborderbg><img src="/images/en_US/global/globalgraphics/spacer01.gif" width="109" height="1" border="0"></td>
<td class=thumbborderbg><img src="/images/en_US/global/globalgraphics/spacer01.gif" width="1" height="1" border="0"></td>
</tr>
<tr>
<td class=thumbborderbg><img src="/images/en_US/global/globalgraphics/spacer01.gif" width="1" height="125" border="0"></td>
<td align=center class=imagecellbg><a href="/product/mens/jeans/dark+resin+jean.do?asc=&sortby=&size="> <img src="http://myshop.ru/myshop/images/en_US/local/products/detail/thumb/1009.10138.2065.451.jpg" border=0 alt="Dark Resin Jean"></a></td>
<td class=thumbborderbg><img src="/images/en_US/global/globalgraphics/spacer01.gif" width="1" height="1" border="0"></td>
</tr>
<tr>
<td class=thumbborderbg><img src="/images/en_US/global/globalgraphics/spacer01.gif" width="1" height="1" border="0"></td>
<td class=thumbborderbg><img src="/images/en_US/global/globalgraphics/spacer01.gif" width="1" height="1" border="0"></td>
<td class=thumbborderbg><img src="/images/en_US/global/globalgraphics/spacer01.gif" width="1" height="1" border="0"></td>
</tr>
</table>
</div>
<div >
<!--a href="#" onClick="showQuickLook('/quicklookdetail.do?productID=100299','quicklookframe','btn100299');return false;" onMouseOver="rollover('btn100299','/images/en_US//local/localbuttons/enlarge_btn_on.gif');showQuickLook('/quicklookdetail.do?productID=100299','quicklookframe','btn100299');return false;" onMouseOut="rollover('btn100299','/images/en_US//local/localbuttons/enlarge_btn_off.gif');"-->
<a href="#" onClick="showQuickLook('/quicklookdetail.do?productID=100299','quicklookframe','btn100299');return false;"> <img id="btn100299" name ="btn100299" src="/images/en_US//local/localbuttons/enlarge_btn_off.gif" border="0" alt="Enlarge" > </a> </div>
<div><img src="/images/en_US/global/globalgraphics/spacer01.gif" width="1" height="2" border="0"></div>
<div class=thumbtext > <a href="/product/mens/jeans/cool+pen.php?asc=&sortby=&size=">COOL PEN</a></div>
<div class=thumbtext> $9.00 </div>
<div><img src="/images/en_US/global/globalgraphics/spacer01.gif" width="1" height="12" border="0"></div></td>
</tr>
</table></td>
<td><img src="/images/en_US/global/globalgraphics/spacer01.gif" width="8" height="1" border="0"></td>
Подскажите, уместны ли тут регулярные выражения и как лучше в данном случае ими пользоваться?
Я начал делать паттерны по частям:
PHP:
$pattern = '~<table name="product_area_([0-9]*)"~U'; //код товара
//$pattern = '~thumbtext >\s*<a href="[-+.?=&a-zA-Z0-9\/]*">([a-zA-Z\s]*)</a>~U'; //название товара
//$pattern = '~\$(\d{1,}\.\d{2})~U'; //цена товара
preg_match_all($pattern, $data, $info);
print_r($info);
Вопрос в следующем: не лучше ли сделать ОДИН большой паттерн, чтобы он выдавал сразу три искомых параметра? Я пытался соединить их с помощью .*, но ничего не получилось.
Подскажите, как правильнее поступить? Если лучше все делать одним паттерном, то помогите, пожалуйста, его составить - у меня не получается.
Спасибо.