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]   

> Описание: помогите правильно составить запрос, мои некорректно работают
rodionov12
Отправлено: 06 Августа, 2011 - 13:15:35
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Авг. 2011  


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




Писал парсер с сайта (wowhead)
наткнулся на такую проблему:

PHP:
скопировать код в буфер обмена
  1.  
  2.         $spell_s='/\"id\"\:([0-9]+).\"learnedat\"\:([0-9]+).\"level\"\:([0-9]+),.*\"skill\"\:\[([0-9]+)\],.*,\"trainingcost\"\:([0-9]+)/';
  3.         $count=preg_match_all ($spell_s, $content, $matches);
  4.         print_r ($matches);
  5.  


выдаёт из множественного списка только первое значение. кроме последних двух (их он берёт с самой последней подходящей строки.

что я пробовал? заменял .* на [^{}]+ (в фигурных скобках заключены наборы значений), но безрезультатно. если сделать так:

PHP:
скопировать код в буфер обмена
  1.  
  2.         $spell_s='/\"id\"\:([0-9]+).\"learnedat\"\:([0-9]+).\"level\"\:([0-9]+)/';
  3.         $count=preg_match_all ($spell_s, $content, $matches);
  4.         print_r ($matches);
  5.  


то всё выводится.

полный код программы:

PHP:
скопировать код в буфер обмена
  1.  
  2. $host="http://www.wowhead.com/";
  3.         set_time_limit(0);
  4.  
  5. function select() // функция для обрезания нужного нам фрагмента из данной строки
  6. {
  7. global $start, $content;
  8.                 $pos = strpos($content, $start);
  9.                 if ($pos) $content = substr($content, $pos);
  10.                 $pos = strpos($content, "}]});");
  11.                 if ($pos) $content = substr($content, 0, $pos);
  12. }
  13.  
  14.         $npc_id=$_POST["id"];
  15.  
  16.         // получаем содержимое страницы в виде строчки, для дальнейшей обработки и поиска
  17.                 $page="npc=" . $npc_id;
  18.                 $content=file_get_contents($host.$page);
  19.  
  20.         // далее идёт обрезание строки
  21.         $start="new Listview({template: 'spell', id: 'teaches-recipe',";
  22.         select();
  23.  
  24.         // ищем все заклинания
  25.         $spell_s='/\"id\"\:([0-9]+).\"learnedat\"\:([0-9]+).\"level\"\:([0-9]+),.*\"skill\"\:\[([0-9]+)\],.*,\"trainingcost\"\:([0-9]+)/';
  26.         $count=preg_match_all ($spell_s, $content, $matches);
  27.         print_r ($matches);


направьте на истинный путь Улыбка

(Отредактировано автором: 06 Августа, 2011 - 13:16:33)

 
 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