Вы задаете здесь свой вопрос. Прежде чем вы получите хороший ответ, вам нужно четко указать, что именно вы хотите «разобрать» вне вашего ввода. Например, вы можете искать любые символы «<» и преобразовывать их в нечто другое, поэтому они не анализируются никаким парсером HTML.
Или вы могли бы найти образец < и> затем < /> узор. (Извините место, я должен был положить его здесь, так что HTML-парсер ЗДЕСЬ не съел бы его). Затем вам также нужно найти « теги одного элемента />».
Фактически вы можете найти допустимые/известные HTML-теги и удалить THOSE.
Итак, возникает вопрос, какой метод подходит для вашего решения? Зная, что если вы сделаете простой парсер, вы можете на самом деле разорвать действительный текст, содержащий символы большего и меньшего размера.
Итак, вот мой ответ для вас до сих пор.
Если вы хотите просто УДАЛИТЬ любой текст в стиле HTML, я бы рекомендовал использовать механизм регулярных выражений (PCRE) и использовать его для анализа вашего ввода и удаления всех совпадающих строк. Вероятно, это простое решение, но для этого требуется создание и создание PCRE, а также проблемы с GPL, о которых вам нужно знать, для вашего проекта. Разбор, вероятно, будет очень прост в реализации и быстро выполняется.
Второй вариант заключается в том, чтобы сделать это, пройдя буфер, ища открытый HTML-символ (<), затем разобравшись до тех пор, пока вы не нажмете первое пустое пространство, затем начните движение, ищите закрывающий HTML-символ (>), затем снова начните ходить, ища соответствующий тег CLOSING, основываясь на том, что вы только что разобрали. (Скажем, это тег DIV, который вы хотите искать/DIV.)
У меня есть код, который делает это в HTML-анализе STL, но есть много проблем, чтобы подумать и о том, чтобы идти по этому маршруту. Например, у вас есть коды сущностей для обработки, теги с одним элементом, такие как IMG, P и BR, чтобы назвать несколько.
Если вы хотите какой-то ДЕЙСТВИТЕЛЬНЫЙ отличный код на C, посмотрите на проект ClamAV. У них есть синтаксический анализатор HTML, который удаляет все теги из страницы и оставляет вас с ТОЛЬКО текстом. (между прочим это делает ..). Посмотрите в файле libclamav \ htmlnorm.c отличный пример «буфера хождения» и разбора. Это не самая быстрая вещь в мире, но она действительно работает ... У последнего Clam может быть даже столько всего, что связано с парсером HTML, это может быть трудно понять. Если да, вернитесь назад и посмотрите на более раннюю версию, например .88.4 или около того. Просто имейте в виду ошибки в тех старых кодовых базах, есть хорошие. :)
Надеюсь, это поможет.
Почему вы внедряете веб-приложение на C++? –
Я не. Я использую библиотеку, которая генерирует текстуру из html/javascript/css. В настоящее время я вызываю (из C++) некоторый javascript на страницах с аргументами из строки в моем (C++) приложении. Эта строка вводится с клавиатуры, поэтому мне нужно санировать, прежде чем вводить код. – Klaim
В документе подразумевается «ввод текста», а не код. – Klaim