我正在尝试在Concrete 5主题中添加类名。剥离空格并用破折号替换它然后将它们转换为小写的优雅方法是什么?
我已经尝试降低案例但我还需要用短划线( - )
替换空格以下是我的代码:
<body class="<?php echo strtolower($c->getCollectionName()); echo ' '; echo strtolower($c->getCollectionTypeName()); ?>">
应该是这样的
<body class="home right-sidebar">
感谢。
答案 0 :(得分:2)
您可以使用此功能......它可以使用无限制的参数
<强>功能强>
<?php
function prepare() {
$arg = func_get_args ();
$new = array ();
foreach ( $arg as $value ) {
$new [] = strtolower ( str_replace ( array (
" "
), "-", $value ) );
}
return implode ( " ", $new );
}
?>
用法
<body class="<?php echo prepare($c->getCollectionName(),$c->getCollectionTypeName()); ?>">
演示
<body class="<?php echo prepare("ABC CLASS","DEF","MORE CLASSES") ?>">
输出
<body class="abc-class def more-classes">
答案 1 :(得分:1)
很容易做到:
使用$replaced = str_replace(" ", "-", $yourstring);
。替换后将空间转换为破折号。
答案 2 :(得分:1)
使用trim()从字符串中删除空格。
使用str_replace()将空格替换为其他字符。
答案 3 :(得分:1)
strtolower(preg_replace('/\s+/','-',trim($var)));
答案 4 :(得分:1)
我会选择preg_replace:
strtolower(preg_replace('_ +_', '-', $c->getCollectionName())
答案 5 :(得分:0)
使用正则表达式并将这些空格和特殊字符替换为下划线而不是短划线
<?php
$name = ' name word _ word - test ! php3# ';
$class_name = class_name( $name );
var_dump( $class_name );
function class_name( $name ){
return strtolower( trim( preg_replace('@[ !#\-\@]+@i','_', trim( $name ) ) , '_' ) );
}
?>