Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/30: Рейтинг темы: голосов - 30, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 26.10.2007
Сообщений: 4
1

Парсер для обработки тагов

28.10.2007, 21:21. Показов 5569. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет,

прошу Вас помочь в одной деликатной ситуации. Ситуация такая:

есть некоторый текст из N символов. В этом тексте содержатся разные таги (table;, tr;, td;, img;, a. Нужно этот текст разделить на несколько равных частей, т.е сделать постраничный вывод для этого текста. Возникают такие ситуации, когда при разделении текста половина тага находится в одной части, другая половина находится в другой. Чтобы этого избежать, нужно обрабатывать эти таги. Может быть кто-нибудь подскажет, есть ли готовые решения подобных парсеров или же может кто делал что-то подобное. Буду признателен за любую информацию.


Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.10.2007, 21:21
Ответы с готовыми решениями:

Создать функцию для обработки символьных строк. За образец брать библиотечные функции обработки строк языка С, но не применять их в своей функции
Доброго времени суток! Крайне необходима помощь экспертов в С++! Кто может - не оставьте меня в...

Парсер для строк
Здравствуйте. Подскажите, есть ли в net возможность парсить строки такого типа: { responce:...

Парсер для статистики
Добрый вечер. Если я ошибся с термином, извините. Уже достаточно давно появилось желание собирать...

Парсер для avito
Всем привет! Хочу написать парсер для сайта avito. Суть следующая: хочу чтобы алгоритм заходил на...

7
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
29.10.2007, 17:10 2
А если строка начинается не с тэга? В принципе, такой парсер несложно написать.
0
0 / 0 / 0
Регистрация: 26.10.2007
Сообщений: 4
29.10.2007, 17:50  [ТС] 3
Разделять нужно для постраничного вывода на экран, ну и для печати - тоже.

Например, у нас есть статья из 10000 символов (в ней содержатся img;, table;, etc.). Нам нужно разделить статью на страницы, длина страницы 1000 символов, т.е получается в итоге 10 страниц. А теперь, допустим, при копировании первых 1000 символов, мы попали в то место, где обрываются теги img;, table;, tr;, td;, b;, strong;.

Суть парсера в том, что при копировании 1000 символов, он проверяет не обрезал ли он таг. Если обрезал, то длина страницы уменьшается или увеличивается до последнего закрывающего тега на этой странице.

Так понятнее ?
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
29.10.2007, 20:27 4
Понятно. Насчет готовых решений не в курсе. Но написать такую программку не составит большого труда.
0
0 / 0 / 0
Регистрация: 26.10.2007
Сообщений: 4
29.10.2007, 23:34  [ТС] 5
Может подскажите как ? И с чего начать ?
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
30.10.2007, 00:15 6
Хм... Вопрос "как?", конечно, интересный. Я даже язык не знаю, на каком Вы собираетесь это писать.
Начать надо с алгоритма (после выбора языка), видимо. Ну я даже не знаю... Наверное, прочитал бы буфер из тысячи символов. Потом (как у Вас сказано "то длина страницы уменьшается или увеличивается до последнего закрывающего тега") прошелся бы назад, проверяя какой тэг последний. Если закрывающий, то обрезать текст, если открывающий, то вперед до первого закрывающего.
В принципе, можно и библиотеку для парсинга использовать. Хотя, в данном случае я бы без нее делал.
0
0 / 0 / 0
Регистрация: 26.10.2007
Сообщений: 4
30.10.2007, 01:04  [ТС] 7
Язык PHP.

Вот, например, текст на входе такой:

$html = 'table width="100%" border="0" cellspacing="0" cellpadding="0" align="center";tr;td;p;Уважаемые абоненты,
Предлагаем Вам воспользоваться услугой b;"КОММУТИРУЕМЫЙ ДОСТУП В ИНТЕРНЕТ"/b; с использованием модемного пула 600-7000, число соединительных линий на котором увеличено до 6800.
За счёт хорошей связи модемного пула 600-7000 со всеми узлами Городской Телефонной Сети качество соединений существенно возрастет, а мощности нового модемного пула позволят обеспечить устойчивое подключение всех абонентов компании "КОМСТАР-Директ", пользующихся коммутируемым доступом.p;img src="../ads.jpg" alt="" width="758" height="535" border="0";/p;
В целях работоспособности услуг: обратный вызов (call-back), дополнительные входные имена, а также для доступа абонентов из Московской области будут сохранены номера модемных пулов 105-5555, 995-5555 и 995-5556./p;/td;/tr;/table;table width="100%" border="0" cellspacing="0" cellpadding="0" align="center";tr;td;p;img src="../ads.jpg" alt="" width="758" height="535" border="0";/p;p;Уважаемые абоненты,
Предлагаем Вам воспользоваться услугой b;"КОММУТИРУЕМЫЙ ДОСТУП В ИНТЕРНЕТ"/b; с использованием модемного пула 600-7000, число соединительных линий на котором увеличено до 6800.
За счёт хорошей связи модемного пула 600-7000 со всеми узлами Городской Телефонной Сети качество соединений существенно возрастет, а мощности нового модемного пула позволят обеспечить устойчивое подключение всех абонентов компании "КОМСТАР-Директ", пользующихся коммутируемым доступом.
В целях работоспособности услуг: обратный вызов (call-back), дополнительные входные имена, а также для доступа абонентов из Московской области будут сохранены номера модемных пулов 105-5555, 995-5555 и 995-5556./p;/td;/tr;/table;';

При первом вырезании попадаем в тег img; и получаем вот что:

$text = 'table width="100%" border="0" cellspacing="0" cellpadding="0" align="center";tr;td;p;Уважаемые абоненты,
Предлагаем Вам воспользоваться услугой b;"КОММУТИРУЕМЫЙ ДОСТУП В ИНТЕРНЕТ"/b; с использованием модемного пула 600-7000, число соединительных линий на котором увеличено до 6800.
За счёт хорошей связи модемного пула 600-7000 со всеми узлами Городской Телефонной Сети качество соединений существенно возрастет, а мощности нового модемного пула позволят обеспечить устойчивое подключение всех абонентов компании "КОМСТАР-Директ", пользующихся коммутируемым доступом.p;img src="../ads.jpg" alt="" ';

И как быть дальше ? Как искать теги ?
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
30.10.2007, 21:51 8
Продолжать читать текст пока не встретится закрывающий тэг. Как искать это уже другой вопрос. Можно искать "/" или ";" если просто тэг обрезало.
php я не занимаюсь. Поэтому не знаю, есть ли в php парсеры, или нет. В случае надобности, писал бы на Python. Там есть все нужные библиотеки.
1
30.10.2007, 21:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.10.2007, 21:51
Помогаю со студенческими работами здесь

Парсер для ajax
Подскажите начинающему. необходимо написать робота, чтобы лазил по сайтам заполнял формы и...

Парсер для joomshopping
Доброго дня! Хотелось спросить, у знающих людей. Насколько реально сделать парсер, который...

Парсер для сайта
Скажите, может ли кто-нибудь написать парсер для сайта бесплатно, просто так сказать для укрепления...

Простой парсер для vk.com
Хочу научиться писать парсер, объектом решил взять сайт vk.com Информация, которую хочу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru