如何取代辱骂性话语php

时间:2014-02-11 15:57:07

标签: php

你好,我有一个页面,我需要替换一些特定单词的所有出现,这可能是一个图像滥用(所有单词的相同图像),我有以下功能,它做了工作,但它区分大小写。喜欢它取代f * k而不是f * kf * kf * kf ** k等...而且我认为有更好的方法可以帮助你。< / p>

我的功能是

function filter($text) {
    $icons = array(
            'f**k '    =>  '<img src="smiles/filter.png" class="filter" title="Blured text  "/>',
            'something else'    =>  '<img src="smiles/filter.png" class="filter" title="Blured text  "/>',
            ' something else'   =>  '<img src="smiles/filter.png" class="filter" title="f**k  you ::F"/>'
    );
    return strtr($text, $icons);
}

1 个答案:

答案 0 :(得分:1)

您需要基于RegEx的更大过滤器

像这样:

function filterAbusiveWords( $string ) {

    static $abusiveWords = array( 
        '/f[u]+c?k/i' => 'some icon',
        '/f[\*]+c?k/i' => 'some icon',
        '/f[a]+c?k/i' => 'some icon',
        '/some normal word/i' => 'some icon'
    );

    return preg_replace( array_keys( $abusiveWords ), array_values( $abusiveWords ), $string );
}

这将(理论上)取代所有出现的fak,fuck,f * * ck,f * k,faaak,fuk等。