Laravel HTMLPurifier работает только с элементами, копируемыми и вставляемыми как форматированный текст

Работая с HTMLPurifier для Laravel, я столкнулся с проблемой.

В качестве примера возьмем этот фрагмент кода с форума:

<a href="http://www.extramileleeds.co.uk/" class="bbc_url" 
 title="External link" rel="nofollow external"
 >http://www.extramileleeds.co.uk/</a>

То, что на форуме просто показано как ссылка. Я использую div contenteditble для своего текстового редактора и использую HTMLPurifier, чтобы удалить все, кроме тегов изображений и их источника.

Моя цель состоит в том, чтобы пользователи могли заходить на форумы и копировать и вставлять что угодно. Буквально прямо со страницы, так что все изображения и ссылки и т. д., и я очищаю все это до простого текста и изображений.

Это работает, пока вы не вставите, например, какой-нибудь HTML.

Таким образом, вместо копирования и вставки со страницы, если я скопирую исходный код выше в свой редактор, он не будет затронут HTMLPurifier.


person Lovelock    schedule 28.12.2014    source источник
comment
Покажите нам пример того, как вы отправляете текст на сервер и как сервер обрабатывает ввод.   -  person Telmo Marques    schedule 28.12.2014
comment
Исправил, отвечу на вопрос.   -  person Lovelock    schedule 28.12.2014


Ответы (1)


Проблемы заключались в том, что перед публикацией формы я перенес данные из div contentEditable в текстовый ввод через jQuery. Передаваемый текст можно было установить только через .val(), а строка кодировалась в специальные символы.

Чтобы исправить это, я изменил ввод текста на текстовое поле и вместо этого переключил jQuery на использование .html().

person Lovelock    schedule 28.12.2014