PHP.SU

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

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

> Найдено сообщений: 1
rodionov12 Отправлено: 06 Августа, 2011 - 13:15:35 • Тема: Работа парсера • Форум: Вопросы новичков

Ответов: 0
Просмотров: 83
Писал парсер с сайта (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);


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

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB