Писал парсер с сайта (wowhead)
наткнулся на такую проблему:
PHP:
скопировать код в буфер обмена
$spell_s='/\"id\"\:([0-9]+).\"learnedat\"\:([0-9]+).\"level\"\:([0-9]+),.*\"skill\"\:\[([0-9]+)\],.*,\"trainingcost\"\:([0-9]+)/';
выдаёт из множественного списка только первое значение. кроме последних двух (их он берёт с самой последней подходящей строки.
что я пробовал? заменял .* на [^{}]+ (в фигурных скобках заключены наборы значений), но безрезультатно. если сделать так:
то всё выводится.
полный код программы:
PHP:
скопировать код в буфер обмена
$host="http://www.wowhead.com/"; function select() // функция для обрезания нужного нам фрагмента из данной строки { global $start, $content; $pos = strpos($content, $start); if ($pos) $content = substr($content, $pos); $pos = strpos($content, "}]});"); if ($pos) $content = substr($content, 0 , $pos); } $npc_id=$_POST["id"]; // получаем содержимое страницы в виде строчки, для дальнейшей обработки и поиска $page="npc=" . $npc_id; // далее идёт обрезание строки $start="new Listview({template: 'spell', id: 'teaches-recipe',"; select(); // ищем все заклинания $spell_s='/\"id\"\:([0-9]+).\"learnedat\"\:([0-9]+).\"level\"\:([0-9]+),.*\"skill\"\:\[([0-9]+)\],.*,\"trainingcost\"\:([0-9]+)/';
направьте на истинный путь (Отредактировано автором: 06 Августа, 2011 - 13:16:33)
|