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

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)

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

BetaRide
источник
Существует разница между 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()).

sobi3ch
источник
1
Это правильный ответ!
Алекс Скрипник,
1
Это может работать для некоторых фильтров, но только для простых. В общем случае обратный вызов процесса api.drupal.org/api/drupal/modules%21filter%21filter.api.php/… принимает больше параметров, включая настройки фильтра. Существует также подготовить обратный звонок.
AdamS