Pull to refresh

Comments 9

Было бы хорошо, если бы вы для примера что-нибудь полезное распарсили, что бы пример хоть кому-то но пригодился ;)

А также добавили бы пояснений по структуре MODx API.
Что например? С удовольствием добавлю в статью, а про MODx API тут используется всего 1 метод и 1 подход с передачей данных в сниппет, причем про метод написано в документации.

Так уж получилось, что задача очень простая, но даже такой не рассматривается на хабре (да и вообще нигде в МОДх сообществах). По своему опыту могу сказать, что мне подобные записи помогли бы в начале пути очень сильно.
Поправил под себя, если в ячейке встречался тег br то он схлопывался, ну и трим функцию добавил — малоли что там в табличках нагородили

	foreach ($array as &$value) {
	  //(быдлокод в действии) 
		$value = str_replace('<br />', ' ', $value);
		$value = str_replace('</td><td', '</td>'.$separator.'<td', $value); // ... сделал финт ушами :) 
		$value = trim(strip_tags($value)); //регулярками убирать тэги таблицы было лениво, проще разделить ячейки служебным набором символов и..
		$table[] = explode($separator, $value); //... разбить оставшееся от strip_tags по этому разделителю
	}

Тогда уж, по правильному надо заменять на \n, а потом после обработки делать nl2br(); иначе переводы строк пропадают…
Всю жизнь для выдирания пользовался domxml, имхо, без таких извратов(а если сложные вложения и т.п.), и в 90% правильно обрабатывает неправильный html.

$array = explode('', $matches[1]); А ЕСЛИ ЗАБЫЛИ TR ЗАКРЫТЬ???

Курл работает через пятую точку, нет обработки 404 и прочих ошибок, а хорошо бы логировать ошибки операций.

Вы уж извините, статья вобще никакой практической ценности не несет, базовые навыки работы с курлом и регулярками и куча лишних переменных.

Для нормальной работы надо:
1) Вынести в отдельные классы работу с url и парсер
2) Сделать более гибкую возможность настройки парсинга
3) Учесть, что код может быть невалидным

P.S. я повторюсь -домом парсинг делается на порядок легче.
я придерживаюсь пути «наименьшего сопротивления» и сторонник теории, что для выполнения операции 2+2 не надо писать сложный класс математических операций :)

Так или иначе, любой парсинг страницы достаточно уникален для каждой конкретной задачи, он просто не может быть шаблонным в принципе — даже если разбирать страницу форума vbulletin для разных стилей может быть разное html-окружение поста. Поэтому в процессе разработки проводится «пилотный» режим настройки.
Такие пути наименьшего сопротивления называются Индийский код. У меня есть наработка, кторая достаточно быстро настраивается под любой сайт и парсит ну оочень много страниц. Только я вам ее не дам, потому что у вас документов нет т.к. такая корова нужна самому т.к. не хочу палить некоторые идеи :)
И снова повторюсь: xpatch намного проще пишется чем регулярки.
Вы плохо читаете документацию по курлу, есть ф-я curl_getinfo которая возращает http_code и массу другой полезной инфы, а дальше обрабатывайте как хочете.
alecksey, возможно я плохо выразился, я не критикую курл, я критикую написанный выше код, я как раз и говорю про то, что надо обрабатывать 404, 500 и прочие ошибки, а так же учитывать редиректы
Sign up to leave a comment.

Articles