2012-04-25 15 views
0

私のコンクリート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

1

文字列からスペースを取り除くためにtrim()を使用してください。

str_replace()を使用すると、スペースを別の文字に置き換えることができます。

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

私はregexを使用することをお勧めします。これは、複数のスペースを持つ文字列( 'etc [space] [space] etc'などのように)を1つのスペースとして扱うためです。 – inhan

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)) , '_')); 
} 
?> 
関連する問題