效率對比(12688個字符,替換1次):
- str_replace: 0.109937906265秒
- strtr: 0.0306839942932秒
替換結果對比
時間對比:
- 比如:「張三」、「張三豐」、「張三豐田」 均為違禁詞 (為何會有這樣的區分?請參見 「法X」、「法Xgong」)
- 原文:「我今天開着張三豐田去上班 」
- strtr:「我今天開着****去上班 」(四個詞均替換為了*)
- str_replace:「我今天開着**豐田去上班 」(僅僅替換了第一個匹配項)
時間對比:
關鍵詞數量:6712 (無重復)
<?php $badword = array( '張三','張三豐','張三豐田'); ?>
測試文件demo.php
<?php require('badword.php'); $badword1 =array_combine($badword,array_fill(0,count($badword),'*')); $bb = '我今天開着張三豐田上班'; $str = strtr($bb,$badword1); echo $str; ?>
測試結果:我今天開着*上班
分析:strtr函數比str_replace和正則的效率高。
<?php // 測試文件demo.php $badword = array( '張三','張三豐','張三豐田' ); // array_combine() 函數通過合並兩個數組來創建一個新數組,其中的一個數組是鍵名,另一個數組的值為鍵值。如果其中一個數組為空,或者兩個數組的元素個數不同,則該函數返回 false。 // array_fill() 函數用給定的值填充數組,返回的數組有 number 個元素,值為 value。返回的數組使用數字索引,從 start 位置開始並遞增。如果 number 為 0 或小於 0,就會出錯。 $badword1 = array_combine($badword,array_fill(0,count($badword),'*')); $bb = '我今天開着張三豐田上班'; $str = strtr($bb, $badword1); echo $str; // 測試結果: 我今天開着*上班 // 分析: strtr函數比str_replace和正則的效率高。 ?>
整理的一份敏感詞sql, 共計6500多條。 經過幾次整改,可以直接使用。
github 下載地址: https://github.com/daidailin/sensitiveWork
轉載:https://blog.csdn.net/qq_30057893/article/details/54409587