class Tags in Drupal 9
Same name and namespace in other branches
- 8 core/lib/Drupal/Component/Utility/Tags.php \Drupal\Component\Utility\Tags
- 10 core/lib/Drupal/Component/Utility/Tags.php \Drupal\Component\Utility\Tags
Defines a class that can explode and implode tags.
Hierarchy
- class \Drupal\Component\Utility\Tags
Expanded class hierarchy of Tags
Related topics
11 files declare their use of Tags
- EntityAutocomplete.php in core/
lib/ Drupal/ Core/ Entity/ Element/ EntityAutocomplete.php - EntityAutocompleteController.php in core/
modules/ system/ src/ Controller/ EntityAutocompleteController.php - EntityAutocompleteMatcher.php in core/
lib/ Drupal/ Core/ Entity/ EntityAutocompleteMatcher.php - EntityAutocompleteTest.php in core/
tests/ Drupal/ KernelTests/ Core/ Entity/ EntityAutocompleteTest.php - TagsTest.php in core/
tests/ Drupal/ Tests/ Core/ Common/ TagsTest.php
31 string references to 'Tags'
- EarlyDateTest::setUp in core/
modules/ taxonomy/ tests/ src/ Functional/ EarlyDateTest.php - EntityReferenceFieldAttributesTest::setUp in core/
modules/ rdf/ tests/ src/ Functional/ EntityReferenceFieldAttributesTest.php - field.field.node.article.field_tags.yml in core/
profiles/ standard/ config/ install/ field.field.node.article.field_tags.yml - core/profiles/standard/config/install/field.field.node.article.field_tags.yml
- field.field.node.article.field_tags.yml in core/
profiles/ demo_umami/ config/ install/ field.field.node.article.field_tags.yml - core/profiles/demo_umami/config/install/field.field.node.article.field_tags.yml
- field.field.node.article.field_tags.yml in core/
modules/ system/ tests/ modules/ olivero_test/ config/ install/ field.field.node.article.field_tags.yml - core/modules/system/tests/modules/olivero_test/config/install/field.field.node.article.field_tags.yml
File
- core/
lib/ Drupal/ Component/ Utility/ Tags.php, line 10
Namespace
Drupal\Component\UtilityView source
class Tags {
/**
* Explodes a string of tags into an array.
*
* @param string $tags
* A string to explode.
*
* @return array
* An array of tags.
*/
public static function explode($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 = [];
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;
}
/**
* Encodes a tag string, taking care of special cases like commas and quotes.
*
* @param string $tag
* A tag string.
*
* @return string
* The encoded string.
*/
public static function encode($tag) {
if (strpos($tag, ',') !== FALSE || strpos($tag, '"') !== FALSE) {
return '"' . str_replace('"', '""', $tag) . '"';
}
return $tag;
}
/**
* Implodes an array of tags into a string.
*
* @param array $tags
* An array of tags.
*
* @return string
* The imploded string.
*/
public static function implode($tags) {
$encoded_tags = [];
foreach ($tags as $tag) {
$encoded_tags[] = self::encode($tag);
}
return implode(', ', $encoded_tags);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
Tags:: |
public static | function | Encodes a tag string, taking care of special cases like commas and quotes. | |
Tags:: |
public static | function | Explodes a string of tags into an array. | |
Tags:: |
public static | function | Implodes an array of tags into a string. |