Как программно фильтровать текст?


8

Мне нужно отобразить текст и применить к нему выбранный фильтр. Текст сохраняется с использованием text_formatтипа поля.

Итак, я знаю исходный текст, я знаю выбранный тип формата, но я не знаю, как на самом деле фильтровать текст.

Как я могу программно фильтровать текст? Спасибо


2
Вы хотите сделать это программно. Если да, взгляните на эту ссылку: stackoverflow.com/questions/2959962/…
BetaRide

сегодня был плохой день. Я использовал это много раз раньше, но я просто не мог вспомнить сейчас. Можете ли вы добавить это как ответ, чтобы я мог принять это?
Мариус Илие

Ответ на короткий. Он был преобразован в комментарий автоматически :-(. Вы все еще можете проголосовать за комментарий ;-).
BetaRide

@BetaRide, если вы добавите ссылку check_markup(), а также скопируете краткое описание, у вас будет вполне приемлемый (даже хороший ) ответ :)
Клайв

Ответы:


8

Этот пост о stackoverflow описывает, как сделать это программно.

Просто вызовите check_markup и введите свой текст и идентификатор фильтра.

check_markup($text, $format_id = NULL, $langcode = '', $cache = FALSE)

Запустите все включенные фильтры для фрагмента текста.


Существует разница между filter_id и format_id . check_markup()принимает format_id и запускает все фильтры, примененные к этому формату.
Комленич

4

С check_markup()функцией вы вынуждены использовать текстовый формат (text format = banch of filters).

Если вы хотите использовать только ОДИН , точный фильтр без полного формата фильтра (например: Преобразовать разрывы строк в HTML ), используйте эту пользовательскую функцию.

/**
 * Custom function to use only ONE filter wightout full format.
 *
 * @param {string} $string String to filter.
 * @param {string} $filter Filter name to use on $string
 * @return {string}        Filtered string.
 */
function filter($string, $filter) {
  $filters = filter_get_filters();
  $filter_autop = $filters[$filter];

  return $filter_autop['process callback']($string);
}

Вы можете проверить список доступных фильтров с помощью dpm(filter_get_filters()).


1
Это правильный ответ!
Алекс Скрипник,

1
Это может работать для некоторых фильтров, но только для простых. В общем случае обратный вызов процесса api.drupal.org/api/drupal/modules%21filter%21filter.api.php/… принимает больше параметров, включая настройки фильтра. Существует также подготовить обратный звонок.
AdamS
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.