2012-04-25 108 views
0

我想在我的Concrete 5主题中添加类名。删除空格并用破折号替换它然后将它们转换为小写的优雅方式是什么?在PHP中转换大小写和空格的最短途径

我已经尝试降低的情况下,但我还需要使用破折号代替空格( - )

这里是我的代码是什么样子:

<body class="<?php echo strtolower($c->getCollectionName()); echo ' '; echo strtolower($c->getCollectionTypeName()); ?>"> 

应该是这样的

<body class="home right-sidebar"> 

谢谢。

回答

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"> 
+0

所有优秀的答案!感谢您为我烘烤它:) – Pennf0lio 2012-04-25 03:22:05

1
strtolower(preg_replace('/\s+/','-',trim($var))); 
+0

我更喜欢使用正则表达式,因为在这种情况下,如果你有一个带有多个空格的字符串(就像'etc [space] [space] etc'那样),它会认为它是一个空格。 – inhan 2012-04-25 01:59:51

1

我去了preg_replace:

strtolower(preg_replace('_ +_', '-', $c->getCollectionName()) 
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('@[ !#\-\@][email protected]','_', trim($name)) , '_')); 
} 
?>