Home  >  Article  >  Backend Development  >  Maximum forward matching algorithm PHP implementation

Maximum forward matching algorithm PHP implementation

WBOY
WBOYOriginal
2016-07-29 08:56:431392browse
<pre class="brush:php;toolbar:false"><span>字符串最大正向匹配算法说明可以参考其他文章,这里只做实现。</span>
<span>三个参数:查询词 $query,词典$</span><span>dict</span><span>,最大长度,这里设置为15</span>
<span>词典示例:</span>
<pre class="brush:php;toolbar:false"><span>$dict = </span><span>array</span><span>(
</span><span>'测试字符'</span><span>=></span><span>'</span><span>测试字符</span><span>'</span><span>,</span><span>'测试'</span><span>=></span><span>'测试'</span><span>,</span><span>)</span>

<span>public function </span><span>extractWords(</span><span>$query</span><span>,</span><span>$</span><span>dict</span><span>,</span><span>$max_len</span><span>=</span><span>15</span><span>){</span><span><em></em></span><span>$feature </span><span>= </span><span>""</span><span>;
</span><span>$slen</span><span>=</span><span><em>mb_strlen</em></span><span>(</span><span>$query</span><span>,</span><span>'UTF8'</span><span>);
</span><span>$c_bg </span><span>= </span><span>0</span><span>;
</span><span>while</span><span>(</span><span>$c_bg</span><span><</span><span>$slen</span><span>){
</span><span>$matched </span><span>= </span><span>false</span><span>;
</span><span>$c_len </span><span>=((</span><span>$slen</span><span>-</span><span>$c_bg</span><span>)></span><span>$max_len</span><span>)?</span><span>$max_len</span><span>:(</span><span>$slen</span><span>-</span><span>$c_bg</span><span>);
</span><span>$t_str </span><span>= </span><span><em>mb_substr</em></span><span>(</span><span>$query</span><span>, </span><span>$c_bg</span><span>,</span><span>$c_len</span><span>,</span><span>'UTF8'</span><span>);
</span><span>for</span><span>(</span><span>$i</span><span>=</span><span>$c_len</span><span>;</span><span>$i</span><span>></span><span>1</span><span>;</span><span>$i</span><span>--){
</span><span>$ttts </span><span>= </span><span><em>mb_substr</em></span><span>(</span><span>$t_str</span><span>, </span><span>0</span><span>,</span><span>$i</span><span>,</span><span>'UTF8'</span><span>);</span><span>if</span><span>(!</span><span>empty</span><span>(</span><span>$dict</span><span>[</span><span>$ttts</span><span>])){
</span><span><em>//                    echo 'matched = '.$ttts.PHP_EOL;
</em></span><span><em></em></span><span>$matched </span><span>= </span><span>true</span><span>;
</span><span>$c_bg </span><span>+= </span><span>$i</span><span>;
</span><span>if</span><span>(!</span><span>empty</span><span>(</span><span>$feature</span><span>)){
</span><span>$feature</span><span>.=</span><span>","</span><span>;
</span><span>                        }
</span><span>$feature</span><span>.=</span><span>$ttts</span><span>;
</span><span>break</span><span>;
</span><span>                    }</span><span>            }
</span><span>if</span><span>(!</span><span>$matched</span><span>){
</span><span>$c_bg</span><span>++;
</span><span>            }
</span><span>        }
</span><span><em>        echo $feature.PHP_EOL;</em></span><span>    }</span>

The above introduces the PHP implementation of the maximum forward matching algorithm, including some aspects. I hope it will be helpful to friends who are interested in PHP tutorials.

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn