function drupal_explode_tags

Explodes a string of tags into an array.

See also

drupal_implode_tags()

6 calls to drupal_explode_tags()
comment_unpublish_by_keyword_action_submit in drupal/modules/comment/comment.module
Process comment_unpublish_by_keyword_action_form form submissions.
DrupalTagsHandlingTestCase::testDrupalExplodeTags in drupal/modules/simpletest/tests/common.test
Explode a series of tags.
DrupalTagsHandlingTestCase::testDrupalImplodeTags in drupal/modules/simpletest/tests/common.test
Implode a series of tags.
node_unpublish_by_keyword_action_submit in drupal/modules/node/node.module
Saves settings form for node_unpublish_by_keyword_action().
taxonomy_autocomplete in drupal/modules/taxonomy/taxonomy.pages.inc
Page callback: Outputs JSON for taxonomy autocomplete suggestions.

... See full list

File

drupal/includes/common.inc, line 7611
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;
}