|
Обрезать HTML
|
|||
---|---|---|---|
#18+
Не нашел, куда лучше, поместил сюда ... Задача. Есть строка в формате html, например Код: html 1. 2. 3. 4. 5.
Нужно получить текст определенной длины (например 70 знаков - заканчивается на "1 строка спи"), при этом закрыть грамотно все теги. Как можно реализовать? (желательно c#) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2020, 05:09 |
|
Обрезать HTML
|
|||
---|---|---|---|
#18+
Maksimka-27 Нужно получить текст определенной длины (например 70 знаков - заканчивается на "1 строка спи"), при этом закрыть грамотно все теги. Как можно реализовать? (желательно c#) Вы привели пример входных данных, но не привели пример результата. Общий принцип прост: парсите входной html, получаете дерево тегов, начинаете его обходить, для каждого тега получаете его текст (в Вашем понимании), пока сумма длин текстов тегов не превысит заданную. Что значит закрыть все теги, я не понял. Вопрос выглядит, как попытка решить какую-то задачу, о которой Вы ничего не сообщаете. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2020, 06:06 |
|
Обрезать HTML
|
|||
---|---|---|---|
#18+
Вы привели пример входных данных, но не привели пример результата. [/quot] Код: html 1. 2. 3. 4. 5.
Как посчитать, где резать эти 70 символов Как понять, какие теги закрывать. Вроде бы однозначный вопрос ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2020, 08:12 |
|
Обрезать HTML
|
|||
---|---|---|---|
#18+
Maksimka-27 Вроде бы однозначный вопрос Лично для меня - нет. Т.к. не ясно, что вывод должен быть в html, например. По сути: Рассмотрите немного другую задачу: по дереву тегов воссоздать html. Для этого придется сделать рекурсивную процедуру обхода дерева, которая будет выдавать результирующий html, добавьте в нее текущую длину выведенного текста, если для данного узла длина текста+переданная длина превысила требуемую, выводите только кусок текста и начинайте возврат по рекурсии, что закроет теги. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2020, 08:57 |
|
Обрезать HTML
|
|||
---|---|---|---|
#18+
x1ca4064 что закроет теги. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2020, 09:13 |
|
Обрезать HTML
|
|||
---|---|---|---|
#18+
Basil A. Sidorov x1ca4064 что закроет теги. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2020, 09:18 |
|
Обрезать HTML
|
|||
---|---|---|---|
#18+
Maksimka-27 Как посчитать, где резать эти 70 символов На пальцах... пальцев не хватит. Значит придётся заводить счётчик символов целого типа. Maksimka-27 Как понять, какие теги закрывать. Посчитав парность каждого из встреченных перед достижением счётчиком из предыдущего параграфа заданного значения. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2020, 13:59 |
|
Обрезать HTML
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Посчитав парность каждого из встреченных перед достижением счётчиком из предыдущего параграфа заданного значения. Думаю, это подойдет к Xml, но не к html. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2020, 20:38 |
|
Обрезать HTML
|
|||
---|---|---|---|
#18+
x1ca4064 Dimitry Sibiryakov Посчитав парность каждого из встреченных перед достижением счётчиком из предыдущего параграфа заданного значения. Думаю, это подойдет к Xml, но не к html. В html все теги (почти - есть hr, br) должны быть открыты/закрыты. Поэтому вполне реально. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2020, 05:39 |
|
Обрезать HTML
|
|||
---|---|---|---|
#18+
Хотя, конечно, есть определённый бардак с опциональным закрытием, как у <P>, например, но ТС-у можно считать только те тэги, которые обязательно требуют парности. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2020, 13:46 |
|
Обрезать HTML
|
|||
---|---|---|---|
#18+
Разбираем HTML в дерево, подсчитываем длину узлов. Потом начинаем перебирать узлы "снизу вверх от последнего к первому" либо пытаясь обрезать, если это текстовый узел, либо выкидывая узел целиком, каждый раз дерево перерасчитываем. Повторяем этот процесс пока не достигнем нужной полной длины. Как-то так. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2020, 19:10 |
|
Обрезать HTML
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Хотя, конечно, есть определённый бардак с опциональным закрытием, как у <P>, например, но ТС-у можно считать только те тэги, которые обязательно требуют парности. Да пофиг на весь бардак с ХТМЛ - можно ведь парсить не XML-парсером, а взять тот же HTML Agility Pack и парсить им. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2020, 19:14 |
|
Обрезать HTML
|
|||
---|---|---|---|
#18+
Лично мне было бы проще написать свой собственный парсер, там всего-то будет автомат на 4-5 состояний чем разбираться с какой-то чужой библиотекой, которая почти наверняка предназначена не совсем для этого. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2020, 14:52 |
|
Обрезать HTML
|
|||
---|---|---|---|
#18+
Maksimka-27 Не нашел, куда лучше, поместил сюда ... Задача. Есть строка в формате html, например Код: html 1. 2. 3. 4. 5.
Нужно получить текст определенной длины (например 70 знаков - заканчивается на "1 строка спи"), при этом закрыть грамотно все теги. Как можно реализовать? (желательно c#) Решение на js https://github.com/brankosekulic/trimHtml Здесь ещё на php https://stackoverflow.com/questions/830283/cutting-html-strings-without-breaking-html-tags https://stackoverflow.com/questions/3810230/close-open-html-tags-in-a-string ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2020, 21:19 |
|
Обрезать HTML
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Лично мне было бы проще написать свой собственный парсер, там всего-то будет автомат на 4-5 состояний чем разбираться с какой-то чужой библиотекой, которая почти наверняка предназначена не совсем для этого. Собственный парсер HTML? Ну-ну, писатель... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2020, 21:24 |
|
Обрезать HTML
|
|||
---|---|---|---|
#18+
fkthat Для этой задачи не требуется полноценный парсер, только его очень ограниченное подмножество, которое реально написать вручную. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2020, 21:53 |
|
Обрезать HTML
|
|||
---|---|---|---|
#18+
А что такого? Всякий программист, в процессе своего становления, должен написать несколько сортировок, транслятор с кого-то языка, в наше время, парсер html/xml/json + свой формат, тетрис, вебсервер, распознавалку MNIST. Еще что-то, по вкусу. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2020, 22:06 |
|
Обрезать HTML
|
|||
---|---|---|---|
#18+
K23, Раньше еще архиватор был :) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2020, 22:08 |
|
Обрезать HTML
|
|||
---|---|---|---|
#18+
x1ca4064 А что такого? Всякий программист, в процессе своего становления, должен написать несколько сортировок, транслятор с кого-то языка, в наше время, парсер html/xml/json + свой формат, тетрис, вебсервер, распознавалку MNIST. Еще что-то, по вкусу. Только кому все это нахрен надо? Не лучше ли потратить время более продуктивно, освоив уже что-то готовое, вместо того чтобы писать свой говновелосипед? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2020, 01:03 |
|
Обрезать HTML
|
|||
---|---|---|---|
#18+
fkthat x1ca4064 А что такого? Всякий программист, в процессе своего становления, должен написать несколько сортировок, транслятор с кого-то языка, в наше время, парсер html/xml/json + свой формат, тетрис, вебсервер, распознавалку MNIST. Еще что-то, по вкусу. Только кому все это нахрен надо? Не лучше ли потратить время более продуктивно, освоив уже что-то готовое, вместо того чтобы писать свой говновелосипед? Такие проекты полезны для обучения. Именно для получения более фундаментальных знаний, чтобы понимать как всё устроено внутри. Осваивать готовое тоже надо для практических задач, без этого никак. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2020, 10:01 |
|
Обрезать HTML
|
|||
---|---|---|---|
#18+
K23 Для этой задачи не требуется полноценный парсер, только его очень ограниченное подмножество Причём подмножество, реально ограниченное поиском угловых скобок. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2020, 14:11 |
|
Обрезать HTML
|
|||
---|---|---|---|
#18+
x1ca4064 К чорту мелочи. Свою DBMS на файлах! И свой язык программирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2020, 15:43 |
|
Обрезать HTML
|
|||
---|---|---|---|
#18+
лучше переходить на Питон! Python: https://repl.it/repls/LightDisfiguredRefactoring#main.py Код: python 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2020, 13:36 |
|
Обрезать HTML
|
|||
---|---|---|---|
#18+
да HTML-парсер в любом языке есть. даже в линухе куча бинарников: html2csv, html2pdf, html2text, html2epub итд можно посмотреть в сырцах, какую либу они юзают для парсинга Dimitry Sibiryakov Хотя, конечно, есть определённый бардак с опциональным закрытием, как у <P>, например, но ТС-у можно считать только те тэги, которые обязательно требуют парности. а чё <p> можно не закрывать? браузер ругнётся. его конечно можно правильно обработать, но это неправильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2020, 15:05 |
|
|
start [/forum/topic.php?fid=16&msg=39975680&tid=1339771]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
52ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 162ms |
0 / 0 |