css 将字符串转换为类的安全名称

r7s23pms  于 2023-02-10  发布在  其他
关注(0)|答案(5)|浏览(137)

我有一个动态菜单,我需要转换成背景图像使用CSS类。我想转换成一个安全的CSS类名称的标签。
例如:- 转换字符串:“Products & Sunflowers”-转换为仅包含a-z和1-9的字符串。上述字符串将转换为可用作类名的验证字符串,例如:'产品_向日葵'

cvxl0en2

cvxl0en21#

我用这个:

preg_replace('/\W+/','',strtolower(strip_tags($className)));

它将去除除字母以外的所有字符,转换为小写,并删除所有html标签。

wvt8vs2t

wvt8vs2t2#

你试过preg_replace吗?
这将为上面的示例返回'ProductsSunflowers'。

preg_replace('#\W#g','',$className);
rjzwgtxy

rjzwgtxy3#

BE风格的clean_class php解决方案

无耻地从Drupal 7的drupal_clean_css_identifier()和Drupal 10的Html::cleanCssIdentifier()函数中插入。

/**
 * Convert any random string into a classname following conventions.
 * 
 * - preserve valid characters, numbers and unicode alphabet
 * - preserve already-formatted BEM-style classnames
 * - convert to lowercase
 *
 * @see http://getbem.com/
 */
function clean_class($identifier) {

  // Convert or strip certain special characters, by convention.
  $filter = [
    ' ' => '-',
    '__' => '__', // preserve BEM-style double-underscores
    '_' => '-', // otherwise, convert single underscore to dash
    '/' => '-',
    '[' => '-',
    ']' => '',
  ];
  $identifier = strtr($identifier, $filter);

  // 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);

  // Convert everything to lower case.
  return strtolower($identifier);
}
qaxu7uf2

qaxu7uf24#

字符串:dome/some.thing-to.大写.单词
结果:将Something转换为大写单词
(add你的模式

var_dump(
    str_replace(
        ['/', '-', '.'], 
        '', 
        ucwords(
            $acceptContentType, '/-.'
        )
    )
);
smdnsysy

smdnsysy5#

我写了一个示例代码来解决您的问题,希望它能有所帮助

<?php
 # filename s.php
 $r ='@_+(\w)@';
$a='a_bf_csdfc__dasdf';
$b= ucfirst(preg_replace_callback(
    $r,
    function ($matches) {
        return strtoupper($matches[1]);
    },
        $a
    ));
echo $a,PHP_EOL;
echo $b,PHP_EOL;

$ php -f网页
a_基本框架_基本数据框架_基本数据框架
资产负债表

相关问题