0 / 0 / 0
Регистрация: 26.10.2007
Сообщений: 4
|
|
1 | |
Парсер для обработки тагов28.10.2007, 21:21. Показов 5569. Ответов 7
Метки нет (Все метки)
Всем привет,
прошу Вас помочь в одной деликатной ситуации. Ситуация такая: есть некоторый текст из N символов. В этом тексте содержатся разные таги (table;, tr;, td;, img;, a. Нужно этот текст разделить на несколько равных частей, т.е сделать постраничный вывод для этого текста. Возникают такие ситуации, когда при разделении текста половина тага находится в одной части, другая половина находится в другой. Чтобы этого избежать, нужно обрабатывать эти таги. Может быть кто-нибудь подскажет, есть ли готовые решения подобных парсеров или же может кто делал что-то подобное. Буду признателен за любую информацию. Спасибо.
0
|
28.10.2007, 21:21 | |
Ответы с готовыми решениями:
7
Создать функцию для обработки символьных строк. За образец брать библиотечные функции обработки строк языка С, но не применять их в своей функции Парсер для строк Парсер для статистики Парсер для avito |
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
|
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 | |
30.10.2007, 21:51 | |
Помогаю со студенческими работами здесь
8
Парсер для ajax Парсер для joomshopping Парсер для сайта Простой парсер для vk.com Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |