Я использую tinyMCE в качестве текстового редактора на своем сайте и хочу переформатировать текст перед сохранением его в своей базе данных (заменив теги & rsquo; на ', затем на'). Я не могу найти простой способ сделать это с помощью tinyMCe, а использование htmlentities () меняет все, включая <>. Есть идеи?
Не могли бы вы пояснить цель этого переформатирования? Это для безопасности (т.е. для предотвращения внедрения XSS или SQL)?






Вы можете использовать strip_tags($str, $allowed_tags), как показано ниже:
$txt = strip_tags($txt, '<p><a><br>');
Непосредственно из руководства по PHP: strip_tags ()
Переменная $ allowable_tags позволяет вам определять строку разрешенных тегов. Вы можете использовать этот необязательный второй параметр, чтобы указать теги, которые не следует удалять.
tinyMCE позволяет указать «белый список» разрешенных тегов, который удалит все теги, не включенные в список:
tinyMCE.init({
... // other init instructions
valid_elements: 'p,a[href],br',
});
В нашем собственном проекте мы объединяем этот белый список с внутренним конвертером, который превращает HTML в BB-подобный формат для базы данных, а затем снова возвращается в HTML, когда его нужно распечатать на странице.
Обновлять: Теперь, когда вопрос был отредактирован для большей ясности, я вижу, что то, что я ввел выше, не решает проблему. Спрашивающий хочет способ преобразовать символьные сущности, не затрагивая HTML-теги.
В нашем собственном проекте эту работу выполняет внутренний преобразователь, который мы используем. При преобразовании из HTML в наше внутреннее представление закодированные символы преобразуются в сами символы; при обратном преобразовании в HTML кодируются высшие символы. Это делается посимвольно, как в синтаксическом анализаторе. Однако этот подход, вероятно, слишком сложен для ваших нужд.
Многие используют ярлык для использования ряда регулярных выражений, но вам может быть сложно организовать ваши регулярные выражения таким образом, чтобы сохранить амперсанды & и точки с запятой ; одновременно с преобразованием символьных сущностей . Вы также обнаружите, что для охвата всех возможных символьных сущностей вам потребуются десятки регулярных выражений.
У меня нет ответа.
Это зависит от тегов, которые вы хотите сохранить. Я предполагаю, что вы хотите использовать все функции TinyMCE, чтобы текст мог включать в себя связанные теги, такие как конструкции таблиц. Тогда нет простого способа сделать это (один из способов - использовать Объектная модель документа PHP для анализа html-документа.
Но у TinyMCE есть несколько параметров конфигурация для кодирования сущностей. Я предлагаю вам проверить параметры конфигурации entity_encoding, сущности и кодирование в руководстве TinyMCE.
И TinyMCE, и FCK имеют множество вариантов конфигурации. Поиск документации может оказаться трудным, но затраченные усилия того стоят.
TinyMCE позволяет указывать кодировку сущности с помощью параметра entity_encoding. Его можно указать при создании редактора. Это может выглядеть примерно так ...
tinyMCE.init ({
entity_encoding: 'numeric'
});
Это изменит тег, например & rsquo; в & # 39 ;.
Ах, после исправления форматирования вопрос стал более понятным!