機密単語置換アルゴリズム、str_replace より 4 倍効率的 (6,000 個の機密単語が添付)
リリース: 2016-07-25 09:08:00
効率比較 (12688 文字、1 置換):
- str_replace: 0.109937906265 秒
- strtr: 0.0306839942932 秒
交換結果の比較
- 例: 「Zhang San」、「Zhang Sanfeng」、「Zhang San Toyota」はすべて禁止用語です (なぜそのような区別があるのですか?「法X」、「法Xgong」を参照してください)
-
原文: 「今日はホンダ・トヨタを運転して仕事に行きました」
-
strtr: 「今日は****を運転して仕事に行きました」 (4つの単語すべてを*に置き換えます)
-
str_replace: "今日**トヨタを運転して仕事に行きました" (最初の一致のみが置き換えられました)
したがって、str_replace を使用して置換しても、本質的に問題を解決することはできません。
時間の比較:
キーワード数:6712(重複なし)
自己初期化:0.00789093971252 (xcache のロード)
自分:0.0354378223419
strtr:0.0311169624329
strtr_array:0.432713985443
str_replace:0.109627008438
- require('badword.src.php');
- $badword1 = array_combine($badword,array_fill(0,count($badword),'*'));
- $bb = '今日は営業していますサントヨタは仕事に行きます';
- $str = strtr($bb, $badword1);
コードをコピー
- //興味のある友達は勉強してみてください
- function strtr_array(&$str,&$replace_arr) {
- $maxlen = 0;$minlen = 1024*128;
- if (empty($replace_arr)) return $ str;
- foreach($replace_arr as $k => $v) {
- $len = strlen($k);
- if ($len if ($len > $maxlen) $maxlen = $ len;
- if ($len < $minlen) $minlen = $len;
- }
- $len = strlen($str);
- $pos = 0;$result = '';
- while ($pos < ; $ len) {
- if ($pos + $maxlen > $len) $maxlen = $len - $pos;
- $found = false;$key = '';
- for($i = 0;$i for($i = $maxlen;$i >= $ minlen;--$i) {
- $key1 = substr($key, 0, $i); //原文: key[$i] = '
-
-
-
-
-
-
-
|
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31