2012-04-25 75 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)) , '_')); 
} 
?>