如何以编程方式过滤文本?


8

我需要显示一个文本并将选定的过滤器应用于它。使用text_format字段类型保存文本。

所以我知道原始文本,我知道所选的格式类型,但我不知道如何实际过滤文本。

如何以编程方式过滤文本?谢谢


2
您是否要以编程方式执行此操作。如果是的话,看看这个链接:stackoverflow.com/questions/2959962/...
BetaRide

今天真是糟糕的一天。我以前使用过很多次,但是现在我已经不记得了。您可以将此添加为答案,以便我接受吗?
Marius Ilie 2012年

答案是简短。它自动转换为评论:-(。您仍然可以评论;-)。
BetaRide 2012年

@BetaRide如果您向添加了链接check_markup(),并且还复制了摘要描述,您将得到一个完全可以接受(甚至很好)的答案:)
Clive

Answers:


8

这篇关于stackoverflow的文章介绍了如何以编程方式执行此操作。

只需调用check_markup并传递您的文本和过滤器ID。

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

对一段文本运行所有启用的过滤器。


filter_idformat_id之间有区别。check_markup()接受format_id,并将运行应用于该格式的所有过滤器。
komlenic,

4

使用该check_markup()功能,您将不得不使用文本格式(文本格式=过滤器组合)。

如果只想使用ONE,而没有完整的过滤器格式的精确过滤器(例如:将换行符转换为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
这是正确的答案!
Alex Skrypnyk '16

1
这可能适用于某些过滤器,但仅适用于简单的过滤器。通常,进程回调api.drupal.org/api/drupal/modules%21filter%21filter.api.php/…需要更多参数,包括过滤器设置。还有一个准备回调。
AdamS
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.