Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Не получается

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Pirat
Отправлено: 26 Сентября, 2013 - 12:11:01
Post Id


Гость


Покинул форум
Сообщений всего: 66
Дата рег-ции: Нояб. 2007  
Откуда: Украина, Одесса


Помог: 0 раз(а)




Добрый день....
не могу никак побороть проблемку с регуляркой....

PHP:
скопировать код в буфер обмена
  1.  
  2. $content=file_get_contents($url);
  3. $taobao='#<em class="tb-rmb-num">(.*?)</em>#';
  4. preg_match_all($taobao,$content,$match);
  5. print_r($match);
  6.  



На странице ($url) есть такой кусок

PHP:
скопировать код в буфер обмена
  1.  
  2. <span>
  3. EMS:
  4. <em class="tb-rmb">Ґ</em>
  5. <em class="tb-rmb-num">25.00</em>
  6. </span>
  7.  


Почему не работает ? Что делаю не так ?

P.s. <em class="tb-rmb-num"> встречается на странице несколько раз.... по-этому делаю через preg_match_all, причем некоторые данные он все таки выводит.


-----
Вообще я продаю автозапчасти... оптом
А PHP - это хобби...
 
 Top
LIME
Отправлено: 26 Сентября, 2013 - 12:24:07
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




PHP:
скопировать код в буфер обмена
  1. $taobao='#<em class="tb-rmb-num">(.*?)</em>#s';//

(Отредактировано автором: 26 Сентября, 2013 - 12:24:19)

 
 Top
Pirat
Отправлено: 26 Сентября, 2013 - 12:33:15
Post Id


Гость


Покинул форум
Сообщений всего: 66
Дата рег-ции: Нояб. 2007  
Откуда: Украина, Одесса


Помог: 0 раз(а)




LIME пишет:
PHP:
скопировать код в буфер обмена
  1. $taobao='#<em class="tb-rmb-num">(.*?)</em>#s';//


пробовал.... и s, и i... и si - ни в какую....


-----
Вообще я продаю автозапчасти... оптом
А PHP - это хобби...
 
 Top
esterio
Отправлено: 26 Сентября, 2013 - 12:40:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




попробуйте модификатор u(в нижнем регистре). Гипотеза: там UTF-8
 
 Top
LIME
Отправлено: 26 Сентября, 2013 - 12:48:25
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




PHP:
скопировать код в буфер обмена
  1. $taobao='#<em class="tb-rmb-num">([\d\.]*?)</em>#s';

esterio можно и без u обойтись так как ascii
 
 Top
esterio
Отправлено: 26 Сентября, 2013 - 12:48:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




Pirat пишет:
<span>
EMS:
<em class="tb-rmb">Ґ</em>
<em class="tb-rmb-num">25.00</em>
</span>

Я так не думаю
 
 Top
LIME
Отправлено: 26 Сентября, 2013 - 12:56:37
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




esterioя тоже заметил что явно UTF
но для конкретной задачи это не важно
ведь в шаблоне участвуют только ascii символы
 
 Top
esterio
Отправлено: 26 Сентября, 2013 - 13:28:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




LIME
да ты прав. ну тогда может там несколько пробелов или кавички разные

ТС попробуйте так
PHP:
скопировать код в буфер обмена
  1. preg_match('#<em\s+?class=(\'|")tb-rmb\1[^>]*>(.+?)</em>#isu', $content, $match);
  2. var_dump($match);

(Отредактировано автором: 26 Сентября, 2013 - 13:31:05)

 
 Top
Pirat
Отправлено: 26 Сентября, 2013 - 13:28:48
Post Id


Гость


Покинул форум
Сообщений всего: 66
Дата рег-ции: Нояб. 2007  
Откуда: Украина, Одесса


Помог: 0 раз(а)




Пробовал и с u...
Резултата так же 0

Пробовал конвертировать при помощи iconv. - тоже не дало результатов...
Самое интересное, что несколько вхождений показывается !!!
А именно это нет...
Может некая защита стоит, запрещающая парчить инфу ?


-----
Вообще я продаю автозапчасти... оптом
А PHP - это хобби...
 
 Top
LIME
Отправлено: 26 Сентября, 2013 - 13:31:59
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




бывает...скопируй в редактор и посмотри включив непечатаемые символы
 
 Top
Pirat
Отправлено: 26 Сентября, 2013 - 14:46:11
Post Id


Гость


Покинул форум
Сообщений всего: 66
Дата рег-ции: Нояб. 2007  
Откуда: Украина, Одесса


Помог: 0 раз(а)




esterio пишет:

ТС попробуйте так
PHP:
скопировать код в буфер обмена
  1. preg_match('#<em\s+?class=(\'|")tb-rmb\1[^>]*>(.+?)</em>#isu', $content, $match);
  2. var_dump($match);


Попробовал - результат тот же....

Но заметил интересную вещь. Если просто експлорером просмотреть HTML код, то такой записи не существует. Видимо она как то подгружается после. Какие есть мысли ?
(Добавление)
Поковырял дальше.... и увидел такую строку:

PHP:
скопировать код в буфер обмена
  1. "valPostFee":{currCityDest:''},
  2.          "apiItemInfo":"http://detailskip.taobao.com/json/ifq.htm?rdt=1380161780566&rlt=1379933466000&hdc=true&rtk=tsid37043528&rlk=rstime_sid37043528&lvm=5dd86f86b12418b6da85c8755950b7aa&nts=false&newSys=true&cart=true&skil=false&stm=1379728800000&id=17756287520&sid=170276057&sbn=e6d90ec09c7948c37b90f853a46edd00&p=1&al=false&ap=1&ss=0&free=0&q=1&ex=0&exs=0&shid=&at=b&ct=1",
  3.  


простым переходом по ссылке увидел мне необходимое значение:

PHP:
скопировать код в буфер обмена
  1. $callback({
  2.                        
  3. postage:{
  4.         postageType:'applyPostage',
  5.         type:'applyPostage',
  6.         location:'&#19978;&#28023;',
  7.         destination:'&#20840;&#22269;',
  8.                 carriage:'<span>&#24555;&#36882;:<em class="tb-rmb">&yen;</em><em class="tb-rmb-num">10.00</em></span><span>EMS:<em class="tb-rmb">&yen;</em><em class="tb-rmb-num">25.00</em></span><span>&#24179;&#37038;:<em class="tb-rmb">&yen;</em><em class="tb-rmb-num">25.00</em></span>',
  9.                 estimation:'',
  10.         dataUrl:'http://delivery.taobao.com/detail/delivery_detail.do?itemId=17756287520&source=cdetail',
  11.         cityId:'1'
  12. }
  13.  
  14.                                 ,quantity:{
  15.         quanity: 1,
  16.         paySuccess: 0,
  17.         confirmGoods: 1,
  18.         paySuccessItems: 0,
  19.         confirmGoodsItems: 1,
  20.         refundCount: 0,
  21.         interval: 30  }
  22.                         });


Реально оттуда выдернуть значение ?
(Добавление)
Pirat пишет:
esterio пишет:

ТС попробуйте так
PHP:
скопировать код в буфер обмена
  1. preg_match('#<em\s+?class=(\'|")tb-rmb\1[^>]*>(.+?)</em>#isu', $content, $match);
  2. var_dump($match);


Попробовал - результат тот же....

Но заметил интересную вещь. Если просто експлорером просмотреть HTML код, то такой записи не существует. Видимо она как то подгружается после. Какие есть мысли ?
(Добавление)
Поковырял дальше.... и увидел такую строку:

PHP:
скопировать код в буфер обмена
  1. "valPostFee":{currCityDest:''},
  2.          "apiItemInfo":"http://detailskip.taobao.com/json/ifq.htm?rdt=1380161780566&rlt=1379933466000&hdc=true&rtk=tsid37043528&rlk=rstime_sid37043528&lvm=5dd86f86b12418b6da85c8755950b7aa&nts=false&newSys=true&cart=true&skil=false&stm=1379728800000&id=17756287520&sid=170276057&sbn=e6d90ec09c7948c37b90f853a46edd00&p=1&al=false&ap=1&ss=0&free=0&q=1&ex=0&exs=0&shid=&at=b&ct=1",
  3.  


простым переходом по ссылке увидел мне необходимое значение:

PHP:
скопировать код в буфер обмена
  1. $callback({
  2.                        
  3. postage:{
  4.         postageType:'applyPostage',
  5.         type:'applyPostage',
  6.         location:'&#19978;&#28023;',
  7.         destination:'&#20840;&#22269;',
  8.                 carriage:'<span>&#24555;&#36882;:<em class="tb-rmb">&yen;</em><em class="tb-rmb-num">10.00</em></span><span>EMS:<em class="tb-rmb">&yen;</em><em class="tb-rmb-num">25.00</em></span><span>&#24179;&#37038;:<em class="tb-rmb">&yen;</em><em class="tb-rmb-num">25.00</em></span>',
  9.                 estimation:'',
  10.         dataUrl:'http://delivery.taobao.com/detail/delivery_detail.do?itemId=17756287520&source=cdetail',
  11.         cityId:'1'
  12. }
  13.  
  14.                                 ,quantity:{
  15.         quanity: 1,
  16.         paySuccess: 0,
  17.         confirmGoods: 1,
  18.         paySuccessItems: 0,
  19.         confirmGoodsItems: 1,
  20.         refundCount: 0,
  21.         interval: 30  }
  22.                         });


Реально оттуда выдернуть значение ?


Сделал пока последовательно обращаясь....
не уверен, правильно ли это, но работает

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. $content=file_get_contents($url);
  4. $api = '#"apiItemInfo":"([^"].*?)"#';
  5. preg_match($api,$content,$match);
  6.  
  7. $contentEms = file_get_contents($match[1]);
  8. $ems = '#<em\s+?class=(\'|")tb-rmb-num\1[^>]*>(.+?)</em>#si';
  9. preg_match_all($ems,$contentEms,$m_ems);
  10. print_r($m_ems);
  11.  
  12.  


-----
Вообще я продаю автозапчасти... оптом
А PHP - это хобби...
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB