[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Ковыряю чужой код
livemotion
Доброй ночи.
Может профи помогут, а то я голову сломал уже.
Есть кусок хтмл:
<span style="color: rgb(163, 1, 1); line-height: 30px;">  <span class="productSpecialPrice fl"> $126.99 </span> </span>


Почему это работает в парсере (выдёргивает цену):
'/<span[\s]*[a-zA-Z0-9=:#-\s;\"]*[\s]*>[\s]*<span class=\"productSpecialPrice fl\">[a-zA-Z;\&\$\s]*([0-9\.]*)[a-zA-Z;\&\$\s]*<\/span>[\s]*<\/span>/';


а это нет:
'/<span[\s]*style=\"color:[\s]*[a-z\(0-9,\s\)]*\;[\s]*line\-height:[\s]*[0-9a-z]*\;\">[\s]*<span class=\"productSpecialPrice fl\">[a-zA-Z;\&\$\s]*([0-9\.]*)[a-zA-Z;\&\$\s]*<\/span>[\s]*<\/span>/';


Хотя по функции print_r совсем наоборот - то что работает в парсере, preg_match_all возвращает ничего, а то что в парсере не работает в простой проверке регэкспа даёт значение.
Спасибо



Спустя 2 минуты, 40 секунд (31.07.2012 - 00:09) Игорь_Vasinsky написал(а):
Я бы вообще так писал

#<span class=\"productSpecialPrice fl\">([^<].*)</span> </span>#iusU


или если без валюты то

#<span class=\"productSpecialPrice fl\">\s?\$([^<].*)</span> </span>#iusU

Спустя 3 минуты, 27 секунд (31.07.2012 - 00:12) Winston написал(а):
Потому что лучше так написать
Свернутый текст
$str = '<span style="color: rgb(163, 1, 1); line-height: 30px;">  <span class="productSpecialPrice fl"> $126.99 </span> </span>

<span style="color: rgb(163, 1, 1); line-height: 30px;"> <span class="productSpecialPrice fl"> $106 </span> </span>'
;

preg_match_all('#(?<=productSpecialPrice fl">)(.*)(?=</span>)#isU', $str, $m);
echo '<pre>' . print_r($m, 1);

А не городить черти что...

Спустя 5 минут, 49 секунд (31.07.2012 - 00:18) livemotion написал(а):
У меня две проверки...
Нужно искать и выдёргивать одну цену:

<span style="color: rgb(163, 1, 1); line-height: 30px;"> <span class="productSpecialPrice fl"> $49.99 </span> </span>


или (если такой код), то две...
<span class="normalprice cen" style="font-size: 16px; color: rgb(153, 153, 153);"><strong>$4.32</strong></span> <span style="font-size: 18px; padding-left: 10px; color: rgb(244, 123, 32);"> Save 10%</span> <br> <span class="productSpecialPrice fl"> $3.88 </span> </span>


В регэкспах не силён, поэтому пишу как по шаблону ))

Спустя 2 минуты, 10 секунд (31.07.2012 - 00:20) Winston написал(а):
А так?
'#(?<=\$)([\d.]++)#'

Не?

Спустя 40 минут, 57 секунд (31.07.2012 - 01:01) livemotion написал(а):
Блин.. при простой проверке всё правильно, но в парсере не работает (( Но почему-то работает тот регэксп, который валится на проверке...
$price_finder='#(?<=productSpecialPrice fl">)(.*)(?=</span>)#isU';
$special_price_finder='#(?<=\$)([\d.]++)#';
//$special_price_else_finder=
preg_match_all($price_finder,$full_product_info_html,$price);
if($price[0]==null)
{
preg_match_all($special_price_finder,$full_product_info_html,$special_price);
if ($special_price[0]==null){
//дописать проверку
preg_match_all($special_price_else_finder,$full_product_info_html,$else_special_price);
$special_price[1][0]=$else_special_price[2][0];
$special_price[2][0]=$else_special_price[1][0];
}

$price[1][0]=$special_price[1][0];
$price[1][0]=$price[1][0]+($price[1][0]*$_POST['price_up']);
$special_price[2][0]=$special_price[2][0]+($special_price[2][0]*$_POST['price_up']);
$discount=$price[1][0]-$special_price[2][0];
$discount=($discount/$price[1][0])*100;
$discount=$discount."%";
}
else
{
$discount="";
$special_price[2][0]="";
$price[1][0]=$price[1][0]+($price[1][0]*$_POST['price_up']);

Спустя 3 минуты, 10 секунд (31.07.2012 - 01:04) Winston написал(а):
Что показывает print_r($price); пропиши перед проверкой (if)

Спустя 13 минут, 30 секунд (31.07.2012 - 01:18) livemotion написал(а):
Winston
Просто:
Array

Спустя 41 минута, 23 секунды (31.07.2012 - 01:59) livemotion написал(а):
Сыплю голову пеплом...
Winston
Спасибо за подсказку... Я браузером вижу один код, а парсер file_get_contents-ом вытягивает немного по другому... ))


Всем благодарности за помощь ))
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.