dqpdb82600 2013-11-15 09:08
浏览 17
已采纳

将停止词的中间部分改为星号PHP

I've two arrays, words and stop_words. I'd like to use stop_words to see matches in words and replace matches with a w**d.

So far:

$words_arr = explode(",",$result[0]->words);
$words_stop_arr = json_decode($settings['words_stop']);
print_r(str_ireplace($words_stop_arr, "****", $words_arr));

words_arr ->

Array ( [0] => sex [1] => drugs [2] => rock [3] => lamba [4] => runner [5] => rule [6] => going [7] => war [8] => work [9] => eat [10] => program [11] => photography [12] => cart [13] => wart [14] => jungle [15] => dick )

And stop words ->

Array ( [0] => dick [1] => orgy [2] => suck [3] => rape )

So dick should be changed into d**k. With my current implementation I just change everything with 4 asterisk... which is not desired...

  • 写回答

2条回答 默认 最新

  • dongou6632 2013-11-15 09:45
    关注

    Here's a function to censorize an array, based on what you're looking for :

    function censorize(&$word, $k, $blacklist) {
        if(array_search($word, $blacklist) !== false) {
            $warr = str_split($word);
            $word = $warr[0]
                    .implode('', array_fill(0, count($warr)-2, '*'))
                    .end($warr);
        }
    }
    
    $words_arr      = array('allowed', 'censored', 'sex', 'drugs', 'rock', 'lamba', 'runner', 'rule', 'going', 'war', 'work', 'eat', 'program', 'photography', 'cart', 'wart', 'jungle', 'tick');
    $words_stop_arr = array('censored', 'tick', 'orga', 'sack', 'rave');
    
    array_walk($words_arr, 'censorize', $words_stop_arr);
    
    echo '<pre>';
    var_dump($words_arr);
    echo '</pre>';
    

    Check it on PHP Sandbox

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥15 Python3.5 相关代码写作
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗