|
Обрезать 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 |
|
Обрезать HTML
|
|||
---|---|---|---|
#18+
Алексей Роза а чё <p> можно не закрывать? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2020, 15:23 |
|
Обрезать HTML
|
|||
---|---|---|---|
#18+
не закрывать тэги - плохая привычка. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2020, 17:36 |
|
Обрезать HTML
|
|||
---|---|---|---|
#18+
Алексей Роза не закрывать тэги - плохая привычка. HTML это все-таки не XML и спецификация HTML5 разрешает многие теги не закрывать (что, лично я считаю, не очень хорошо, но так уж оно есть). ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2020, 04:32 |
|
Обрезать HTML
|
|||
---|---|---|---|
#18+
fkthat Алексей Роза не закрывать тэги - плохая привычка. HTML это все-таки не XML и спецификация HTML5 разрешает многие теги не закрывать (что, лично я считаю, не очень хорошо, но так уж оно есть). https://css-live.ru/verstka/do-not-close-tags.html Лучше не фантазировать, а просто соблюдать стандарты Возможно меняя привычки ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2020, 09:30 |
|
Обрезать HTML
|
|||
---|---|---|---|
#18+
Изопропил просто соблюдать стандарты Ну так и закрыть будет по стандарту и незакрыть будет по стандарту, т.ч. это уже дело вкуса. Вот то, что большинство тегов в принципе нельзя делать self-closed это часто действительно раздражает. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2020, 10:19 |
|
Обрезать HTML
|
|||
---|---|---|---|
#18+
Изопропил https://css-live.ru/verstka/do-not-close-tags.html Лучше не фантазировать, а просто соблюдать стандарты Возможно меняя привычки А ещё лучше хернёй не заниматься и просто закрывать ВСЕ закрываемые теги. Я смотрю на это количество "если" и мне уже хочется в окно выйти. Мне предлагают всё это в голове держать. Она же у меня пустая, там просторно и много места. А ещё предлагают в коде запоминать, где там был открытый тег, и где он в итоге примерно должен был закрыться... тут? или тут? а может тут? А кроме того - самому браузеру, на уровне парсинга, тоже должно быть сложнее высчитывать место, в котором тег должен закрываться. Да и HTML-парсеры, C/C++ либы - они то сумеют распарсить код БЕЗ тегов? Какой-то дебил вылез со своими "гениальными" идеями "не закрывайте теги!", ну и что? Мы их ловим, сажаем в психушку и живём дальше. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2020, 12:18 |
|
Обрезать HTML
|
|||
---|---|---|---|
#18+
x1ca4064 Dimitry Sibiryakov Посчитав парность каждого из встреченных перед достижением счётчиком из предыдущего параграфа заданного значения. Думаю, это подойдет к Xml, но не к html. Технически эта война стандартов закончилась после появления HTML5. Далее дороги XML/Html5 разошлись. Требование закрытия тегов существовало только в XHTML и этот стандарт так и не стал главным или обязательным для браузеров. После HTML5 - был взят курс на функциональность внедяемых элементов таких как <canvas>, <video>, <audio>, а строгий формализм не был принят во внимание как главный. На сегодняшний день - для линейки браузеров Mozilla/IE/Chrome нет такой проблемы как незакрытый тег. Они - тего-толератны. И верстальщики лупят незакрытые <img>, <br>, <ht> просто потому что им так быстрее. Но вы можете делать strict-генерацию контента если у вас сайт в рамках вашего предприятия или вам просто так удобно для его-же scrape или трансформации в другие форматы. Ну... если-бы я делал @Generated содержание то скорее всего тоже закрывал-бы теги просто потому что это выглядит строго да и самому как-то приятнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2020, 12:46 |
|
Обрезать HTML
|
|||
---|---|---|---|
#18+
mayton И верстальщики лупят незакрытые <img>, <br>, <ht> просто потому что им так быстрее. Теги, закрывать которые нельзя Это пустые (void) элементы: area, base, br , col, embed, hr, img , input, link, meta, param, source, track, wbr. Многие поспешат возразить: «Это же самозакрывающие(ся) теги, у них свой способ закрытия — слеш перед >!». Что ж, их ждет сюрприз: в HTML этот слеш… не значит ничего! Он не считается ошибкой, чтобы было легче переходить с XHTML, но «самозакрытыми», точнее, не требующими закрытия, их делает не слеш, а «зашитый» в алгоритм парсинга список этих пустых элементов. И «закрыть» по аналогии, скажем, <div /> нельзя — для HTML это будет открывающий тег (притом уже с ошибкой). Только для SVG- и MathML-элементов (напр. <g />) этот слеш означает честное «самозакрытие» (т.е. сокращение для <g></g>). ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2020, 13:46 |
|
Обрезать HTML
|
|||
---|---|---|---|
#18+
Алексей Роза Да и HTML-парсеры, C/C++ либы - они то сумеют распарсить код БЕЗ тегов? Если это действительно HTML-, а не просто XML- парсер, то сумеет. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2020, 17:19 |
|
|
start [/forum/topic.php?all=1&fid=16&tid=1339771]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
167ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
others: | 260ms |
total: | 532ms |
0 / 0 |