2016-02-01 130 views
0

我有,我想在某些單詞來替換壞字符串數組,目前我寫了這個代碼來管理這一點,但它不是,它應該工作:PHP - 如果一個字包含特定字符串替換它

public function _clean_filename($fn) 
{ 
    if($fn === '') 
     return; 

    foreach((array)$_filename_bad_chars as $bad) 
    { 
     if(strpos($fn, $bad)) 
     { 
      str_replace($bad, '', $fn); 
     } 
    } 
    return $fn; 
} 

Simptom:當我輸入一個帶有壞字符串的單詞時,函數不會返回任何內容。

我應該如何重寫這段代碼才能使它正常工作?

+2

那麼定義了$ _filename_bad_chars。不在這個函數的範圍那肯定是 – RiggsFolly

+0

它聲明爲一個公共數組在同一個類:) –

+0

那麼試試'$ this - > _ filename_bad_chars'並鬆開'(數組)'鑄造,除非它當然不是一個數組?? – RiggsFolly

回答

3

看來:

  1. $_filename_bad_chars應該$this->_filename_bad_chars
  2. str_replace($bad, '', $fn);應該$fn = str_replace($bad, '', $fn);
+0

Lol,我現在覺得自己是一個總的noob!非常感謝你們! –

+2

循環也是多餘的,因爲'str_replace'接受數組 – Steve

2

可以簡化整個方法:

public function _clean_filename($fn) 
{   
    return str_replace($this->_file_bad_chars, '', $fn); 
} 

str_replace接受數組所有parame ters,並給出一個空字符串爲subject將返回一個空字符串

此外,您使用公共方法的領先下劃線是奇怪的!

相關問題