8.2.x filter.module check_markup($text, $format_id = NULL, $langcode = '', $filter_types_to_skip = array())
8.0.x filter.module check_markup($text, $format_id = NULL, $langcode = '', $filter_types_to_skip = array())
8.1.x filter.module check_markup($text, $format_id = NULL, $langcode = '', $filter_types_to_skip = array())
4.7.x filter.module check_markup($text, $format = FILTER_FORMAT_DEFAULT, $check = TRUE)
5.x filter.module check_markup($text, $format = FILTER_FORMAT_DEFAULT, $check = TRUE)
6.x filter.module check_markup($text, $format = FILTER_FORMAT_DEFAULT, $check = TRUE)
7.x filter.module check_markup($text, $format_id = NULL, $langcode = '', $cache = FALSE)

Run all the enabled filters on a piece of text.


$text: The text to be filtered.

$format: The format of the text to be filtered. Specify FILTER_FORMAT_DEFAULT for the default format.

$check: Whether to check the $format with filter_access() first. Defaults to TRUE. Note that this will check the permissions of the current user, so you should specify $check = FALSE when viewing other people's content. When showing content that is not (yet) stored in the database (eg. upon preview), set to TRUE so the user's permissions are checked.

6 calls to check_markup()
block_block in modules/block/block.module
Implementation of hook_block().
comment_nodeapi in modules/comment/comment.module
Implementation of hook_nodeapi().
node_prepare in modules/node/node.module
Apply filters and build the node's standard elements.
profile_view_field in modules/profile/profile.module
theme_comment_view in modules/comment/comment.module

... See full list


modules/filter/filter.module, line 762
Framework for handling filtering of content.


function check_markup($text, $format = FILTER_FORMAT_DEFAULT, $check = TRUE) {
  // When $check = TRUE, do an access check on $format.
  if (isset($text) && (!$check || filter_access($format))) {
    $format = filter_resolve_format($format);

    // Check for a cached version of this piece of text.
    $id = $format . ':' . md5($text);
    if ($cached = cache_get($id, 'cache_filter')) {
      return $cached->data;

    // See if caching is allowed for this format.
    $cache = filter_format_allowcache($format);

    // Convert all Windows and Mac newlines to a single newline,
    // so filters only need to deal with one possibility.
    $text = str_replace(array("\r\n", "\r"), "\n", $text);

    // Get a complete list of filters, ordered properly.
    $filters = filter_list_format($format);

    // Give filters the chance to escape HTML-like data such as code or formulas.
    foreach ($filters as $filter) {
      $text = module_invoke($filter->module, 'filter', 'prepare', $filter->delta, $format, $text);

    // Perform filtering.
    foreach ($filters as $filter) {
      $text = module_invoke($filter->module, 'filter', 'process', $filter->delta, $format, $text);

    // Store in cache with a minimum expiration time of 1 day.
    if ($cache) {
      cache_set($id, 'cache_filter', $text, time() + (60 * 60 * 24));
  else {
    $text = t('n/a');

  return $text;