Возможно вы меня не верно поняли.
Если брать пример web/catalog.php, где для примера выводятся навигаторы - там все понятно. Там кодировка UTF-8.
Но интересует именно "Все каталоги Озон.ру", которые должны открываться на web/index.php.
Если я правильно понимаю, то логика такая:
Идем на сайт http://www.ozon.ru/
Получаем исходный код страницы
Разбираем его по regexp '/<li><a href="\/context\/(?P<links>[^"]+)" title="(?P<title>[^"]+)">/'
Получаем наименование и имя каталога первого уровня.
Далее идем по этим каталогам и получаем 2-ой уровень
Далее 3-й.
Так вот... Когда получаем исходный код для парсинга первого уровня, то он приходит (или где-то внутри обрабатывается) для regexp какой-то странный. Ни UTF-8, ни CP-1251.
А как понял $transformer->transform - работает именно с xml-файлами, которые забирает по указанному пути с сайта. То есть не относится к разбиранию исходного кода сайта для отображения списка каталогов.
Если я не прав - тогда подскажите, где необходимо изменить эту строчку.
Спасибо. Только вот вопросик... на странице http://stasdavydov.com/ozonru-parser/ лежит все таже версия 1.15. Причем сравнил файлы - они такие же, как и до внесения вами исправлений. Может я где-то не на той странице смотрю или вы выкладываете версии, когда накопится какое-то значимое количество исправлний?
Помогите разобраться.
Есть парсер 1.15 от Стас Давыдов (http://stasdavydov.com/ozonru-parser/).
Установлен на Windows Server 2003, PHP 5.2.14.
Все тесты парсера на совместимость (bin\check.php) проходят удачно (все с +).
Однако, при попытке получить весь список (web\index.php) разделов выдается ошибка:
Fatal error: Uncaught exception 'OzonException' with message 'Cannot parse catalog links' in ПУТЬ\src\Ozon.php:49 Stack trace: #0 ПУТЬ\web\index.php(11): Ozon::getCatalogList(3) #1 {main} thrown in ПУТЬ\src\Ozon.php on line 49
Как я понял, это связано с разбиранием строки по regexp
if(preg_match_all('/<li><a href="\/context\/(?P<links>[^"]+)" title="(?P<title>[^"]+)">/',
$browser->content, $matches)) {
в файле src\Ozon.php (строка 43). То есть к нему прходит не верный $browser->content.
Если сделать
echo ($browser->content);
выводися абра-дабабра всякая. Причем это явно не CP1251 и не UTF-8. И, как следствие, regexp не может ничего найти...
Попробовал сам понять в чем дело, но возможно, не хватает знаний.
Помогите... как получить весь список ?
Заранее благодарен.