PHP 単項単語分割アルゴリズム

WBOY
リリース: 2016-06-13 12:20:01
オリジナル
838 人が閲覧しました

コードをコピー コードは次のとおりです:



/**
* 単項単語分割アルゴリズム
* 最初の文字の ASCII コードが 192 以下の場合、UTF8 は 1 バイトのみを占有します。文字が 192 より大きく 224 より小さい場合は 2 バイトを占有し、それ以外の場合は 3 バイトを占有します
* 単項単語分割では、mysql の my.ini ファイルに ft_min_word_len=1 を追加する必要があります
* mysql クエリ ステートメントを使用して、'%ft%' のような変数を表示して、mysql 全文検索関連の設定を表示します
*
* @access global
* @param string $str
* @param boolean $ unique 重複した値を削除するかどうか
* @param boolean $merge 追加の値をマージするかどうか
* @ return array
*/
関数seg_word($ str,$unique=false,$merge=true)
{
$str = トリム(strip_tags($str));
$strlen = strlen($str); ($strlen == 0) return array();
$spc = ' ';
//必要に応じてフィルタリングする文字を追加します
$search = array(',', '/', ' \'、'.'、';'、':'、'''、'!'、'~'、'"'、'`'、'^'、'('、')'、'?' 、「-」、「t」、「n」、「」、「<」、「>」、「r」、「rn」、「$」、「&」、「%」、「#」 、'@'、' '、'='、'{'、'}'、'['、']'、')'、'('、'.'、'.'、'、'、'! '、';'、'"'、'"'、''、''、'['、']'、'、'、'—'、' '、'《'、'》'、' -', '...', '[', ']',':');
$numpairs = array('1'=>'一','2'=>'二', '3'=>'3'、'4'=>'4'、'5'=>'5'、'6'=>'6'、'7'=>'7'、 '8'=>'8','9'=>'9','0'=>'ゼロ');
$str = alab_num($str); ($search,' ',$str);
$ord = $i = $k = 0;
$prechar = 0; // 0-空白 1-英語アンパサンド 2-中国語
$result = array() ;
$annex = array();

while($ord = ord($str[$i]))
{
//1 バイト文字
if ( $ord <= 0xC0 )
{
//空の文字列を削除
if($ord $prechar=0; $ k ;
Continue;
}
//追加の中国語の大文字変換
if(isset($numpairs[$str[$i]])) {
$annex[] =$ numpairs[$str[$i]];
}
//前の文字が中国語の場合
if( $prechar == 2 ){
$result[ $k] = $ str[$i ];
else {
$result[$k] .= $str[$i]
$prechar = 1; ;
}
else //2 ~ 3 バイトの文字 (中国語)
{
if($ord < 0xE0)
$step = 2;ステップ = 3 ;
$c = substr($str,$i,$step);
if(false !== $key = array_search($c,$numpairs)){
$annex[ ] = $キー;
}
if ($prechar != 0) {
$result[ $k] = $c;
else {
$result[$ k] = $c;

$prechar = 2;
}
}
$merge? $result, $annex) : $result ;
return $unique? array_unique($result) :



ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート