你好,我有一个页面,我需要替换一些特定单词的所有出现,这可能是一个图像滥用(所有单词的相同图像),我有以下功能,它做了工作,但它区分大小写。喜欢它取代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);
}
答案 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等。