2016-02-01 132 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将返回一个空字符串

此外,您使用公共方法的领先下划线是奇怪的!

相关问题