Same name and namespace in other branches
  1. 7.x includes/common.inc \drupal_explode_tags()

Explode a string of given tags into an array.

See also

drupal_implode_tags()

4 calls to drupal_explode_tags()
comment_unpublish_by_keyword_action_submit in modules/comment/comment.module
Process comment_unpublish_by_keyword_action_form form submissions.
node_unpublish_by_keyword_action_submit in modules/node/node.module
taxonomy_autocomplete in modules/taxonomy/taxonomy.pages.inc
Helper function for autocompletion
taxonomy_node_save in modules/taxonomy/taxonomy.module
Save term associations for a given node.

File

includes/common.inc, line 3791
Common functions that many Drupal modules will need to reference.

Code

function drupal_explode_tags($tags) {

  // This regexp allows the following types of user input:
  // this, "somecompany, llc", "and ""this"" w,o.rks", foo bar
  $regexp = '%(?:^|,\\ *)("(?>[^"]*)(?>""[^"]* )*"|(?: [^",]*))%x';
  preg_match_all($regexp, $tags, $matches);
  $typed_tags = array_unique($matches[1]);
  $tags = array();
  foreach ($typed_tags as $tag) {

    // If a user has escaped a term (to demonstrate that it is a group,
    // or includes a comma or quote character), we remove the escape
    // formatting so to save the term into the database as the user intends.
    $tag = trim(str_replace('""', '"', preg_replace('/^"(.*)"$/', '\\1', $tag)));
    if ($tag != "") {
      $tags[] = $tag;
    }
  }
  return $tags;
}