public static Html::cleanCssIdentifier($identifier, array $filter = array( ' ' => '-', '_' => '-', '/' => '-', '[' => '-', ']' => '', ))
Prepares a string for use as a CSS identifier (element, class, or ID name).
http://www.w3.org/TR/CSS21/syndata.html#characters shows the syntax for valid CSS identifiers (including element names, classes, and IDs in selectors.)
string $identifier: The identifier to clean.
array $filter: An array of string replacements to use on the identifier.
string The cleaned identifier.
public static function cleanCssIdentifier($identifier, array $filter = array( ' ' => '-', '_' => '-', '/' => '-', '[' => '-', ']' => '', )) { // We could also use strtr() here but its much slower than str_replace(). In // order to keep '__' to stay '__' we first replace it with a different // placeholder after checking that it is not defined as a filter. $double_underscore_replacements = 0; if (!isset($filter['__'])) { $identifier = str_replace('__', '##', $identifier, $double_underscore_replacements); } $identifier = str_replace(array_keys($filter), array_values($filter), $identifier); // Replace temporary placeholder '##' with '__' only if the original // $identifier contained '__'. if ($double_underscore_replacements > 0) { $identifier = str_replace('##', '__', $identifier); } // Valid characters in a CSS identifier are: // - the hyphen (U+002D) // - a-z (U+0030 - U+0039) // - A-Z (U+0041 - U+005A) // - the underscore (U+005F) // - 0-9 (U+0061 - U+007A) // - ISO 10646 characters U+00A1 and higher // We strip out any character not in the above list. $identifier = preg_replace('/[^\x{002D}\x{0030}-\x{0039}\x{0041}-\x{005A}\x{005F}\x{0061}-\x{007A}\x{00A1}-\x{FFFF}]/u', '', $identifier); // Identifiers cannot start with a digit, two hyphens, or a hyphen followed by a digit. $identifier = preg_replace(array( '/^[0-9]/', '/^(-[0-9])|^(--)/' ), array('_', '__'), $identifier); return $identifier; }
© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/core!lib!Drupal!Component!Utility!Html.php/function/Html::cleanCssIdentifier/8.1.x