2011-01-05 9 views
0

PHPで文字列操作に問題があります。私は ""または "_"で区切られた単語を持つ文字列パラメータを取る関数を書いています。私はすべてのアルファベット以外の文字を取り除き、 " - "で区切られた単語を返す関数を必要とします。 _「の代わりに「の」または」 - 「」PHPでstr_replaceとpreg_replaceを操作するのに問題があります

function cleanCategoryForUrl($strCategory){ 
    $newCategory = str_replace('_', '-', $strCategory); //First replacement 
    echo ($newCategory); 
    $newCategory = str_replace(' ', '-', $newCategory); //Second replacement 
    echo ($newCategory); 
    $newCategory = preg_replace('/[^a-z-]/i', '', $strCategory); //Final replacement 
    echo ($newCategory); 
    return $newCategory; 
} 

第一および第二の置換が取得で区切られた単語を行います: これは私がこれまで持っているものです。最終的な置換は、アルファベットでないか、または " - "でないすべての文字の赤を取得します。

しかし、コードをテストすると、最終的な置換後に予期しない結果が得られます。 「Home_Health」の入力と

私はこのプリント得る:予想通り

Home-Health 
Home-Health 
HomeHealth 

は、最初の2つの出力がありますが、3つ目は除去 - (起こっていないはずである)「」を。正規表現パターンに何か問題があると思われますが、http://gskinner.com/RegExr/でテストするとうまくいきます。私はregexを使うのが初めてで、何が間違っているのか理解しません。助けてください

答えて

2

すべてはうまくいくようですが、あなたはパラメータpreg_replaceで渡すだけです。 $ newCategoryを渡すのではなく、$ strCategoryを渡しています。

だけで、以下のいずれかで

function cleanCategoryForUrl($strCategory){ 
    $newCategory = str_replace('_', '-', $strCategory); //First replacement 
    echo ($newCategory."<br/>"); 
    $newCategory = str_replace(' ', '-', $newCategory); //Second replacement 
    echo ($newCategory."<br/>"); 
    $newCategory = preg_replace('/[^a-z-]/i', '', $newCategory); //Final replacement 
    echo ($newCategory."<br/>"); 
    return $newCategory; 
} 

を試してみてくださいさもないと、あなたは、このいずれかを使用することができます。

function cleanCategoryForUrl($strCategory){ 
    $newCategory = preg_replace('/[_ ]/', '-', $strCategory); //Final replacement 
    $newCategory = preg_replace('/[^a-z-]/i', '', $newCategory); //Final replacement 
    echo ($newCategory."<br/>"); 
    return $newCategory; 
} 

これが役立つことを願って、

ありがとう!

フセイン。

+0

OMG私はこのような間違いを犯したと信じられません。私は$ newCategoryをpreg_replaceに渡すつもりだった。私はそのパターンをチェックしていましたが、他のパラメータが正しいことを確認することはありませんでした。それを指摘してくれてありがとう。 –

+0

いつかそれは私と一緒に起こる..あなたは歓迎ビラル.. – eHussain

関連する問題