@Speakea1y1289

Как чистить HTML код присылаемый в форме в textarea?

Добрый вечер. Имеется следующая форма с textarea:

<form method="POST" enctype="multipart/form-data">
  <label for="textarea" class="control-label mb-10 text-left">Введите исходный код HTML страницы с тестом:</label><br>
  <textarea style="resize: vertical;" class="form-control" rows="10" name="html_test" id="textarea" placeholder="HTML-код"></textarea><br>
  <button type="submit" name="get_answers" class="btn  btn-primary btn-rounded">Отправить</button>
</form>


В textarea человек должен вводить полный HTML-код страницы. Допустим следующий код: https://pastebin.com/CYGnAWVb

После нажатия на кнопку "Отправить" в textarea HTML-код должен автоматически чиститься и нужно, чтобы остался только img с классом header_subj_logo (со 142 строки кода) + содержимое этого тега и тег div с классом prob_list (с 425 строки) + всё содержимое, находящееся в этом div'е. Весь оставшейся код зачищаем! В POST запросе должны уже получить чистый код. Как это сделать?
  • Вопрос задан
  • 76 просмотров
Пригласить эксперта
Ответы на вопрос 3
SagePtr
@SagePtr
Еда - это святое
filter_input(INPUT_POST, 'html_test', FILTER_SANITIZE_SPECIAL_CHARS);
Ответ написан
Комментировать
В POST запросе должны уже получить чистый код

Это можно сделать с помощью JS. Но делать так не следует. Лучше получайте грязный HTML на сервере и сразу там же, на сервере, его и очищайте. Так будет намного надёжнее
Ответ написан
BRAGA96
@BRAGA96
const $textarea = document.querySelector('textarea')
const $button = document.querySelector('button')

$button.addEventListener('click', event => {
    const $html = parseHTML($textarea.value)
    const img = $html.querySelector('img.header_subj_logo').outerHTML
    const div = $html.querySelector('div.prob_list').outerHTML
    $textarea.value = img + div
})

function parseHTML(html) {
    const root = document.implementation.createHTMLDocument()
    root.documentElement.innerHTML = html
    return root.documentElement
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы