PHP-如果一个单词包含某个字符串,则替换它

PHP-如果一个单词包含某个字符串,则替换它,php,Php,我有一个带有坏字符串的数组,我想用某些词替换它,目前我编写了此代码来管理它,但它不能正常工作: public function _clean_filename($fn) { if($fn === '') return; foreach((array)$_filename_bad_chars as $bad) { if(strpos($fn, $bad)) { str_replace($bad, ''

我有一个带有坏字符串的数组,我想用某些词替换它,目前我编写了此代码来管理它,但它不能正常工作:

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:当我输入一个包含坏字符串的单词时,函数不返回任何内容

我应该如何重写此代码以使其正常工作?

似乎:

  • $\u filename\u bad\u chars
    应该是
    $this->\u filename\u bad\u chars
  • stru替换($bad,,$fn)应该是
    $fn=str\u replace($bad,,$fn)
  • 似乎:

  • $\u filename\u bad\u chars
    应该是
    $this->\u filename\u bad\u chars
  • stru替换($bad,,$fn)应该是
    $fn=str\u replace($bad,,$fn)

  • 您可以简化整个方法:

    public function _clean_filename($fn)
    {        
        return str_replace($this->_file_bad_chars, '', $fn);
    }
    
    str\u replace
    接受所有参数的数组,并为
    subject
    指定一个空字符串,则返回一个空字符串


    此外,在公共方法中使用前导下划线也很奇怪

    您可以简化整个方法:

    public function _clean_filename($fn)
    {        
        return str_replace($this->_file_bad_chars, '', $fn);
    }
    
    str\u replace
    接受所有参数的数组,并为
    subject
    指定一个空字符串,则返回一个空字符串


    此外,在公共方法中使用前导下划线也很奇怪

    那么
    $\u filename\u bad\u chars
    定义在哪里呢。不在这个函数的范围内,这是肯定的,它在同一个类中声明为一个公共数组:)那么请尝试
    $this->\u filename\u bad\u chars
    并松开
    (数组)
    强制转换,当然,除非它不是数组??没有任何更改。。。函数返回相同的结果。
    str_replace($bad,,$fn)
    返回一个字符串,您正在将其转储到以太中,请参阅@Forseti answerSo where is
    $\u filename\u bad\u chars
    defined。不在这个函数的范围内,这是肯定的,它在同一个类中声明为一个公共数组:)那么请尝试
    $this->\u filename\u bad\u chars
    并松开
    (数组)
    强制转换,当然,除非它不是数组??没有任何更改。。。函数返回相同的结果。
    str_replace($bad,,$fn)
    返回一个字符串,您正在将其转储到以太中,请参见@Forseti answerLol,我现在感觉自己像一个彻头彻尾的傻瓜!非常感谢大家!循环也是多余的,因为
    str\u replace
    接受了arraysLol,我现在感觉像一个完全的noob!非常感谢大家!循环也是多余的,因为
    str\u replace
    接受数组