前の記事 ≪:phpMyEdit: DB操作コード自動生成
次の記事 ≫:phpFormGenerator

「すべての漢字を取り出す正規表現」をPHPで試す

2005年11月07日-はてなブックマーク

スポンサード リンク
[PR] 日々膨大に出現するJS/CSSライブラリ等を意識にとどめておく方法
すべての漢字を取り出す正規表現を参考にPHPでトークンを切り出すサンプルを作成しました。

<?php

// スクリプトはUTF-8で記述されています

$str = <<<EOM
ようこそphpspotへ!当サイトではフリーのwindows用php開発環境であるPHPエディタ forWin や、フリーのPHPスクリプト( PHP掲示板,webshot,webimager,CMS 等 )、PHPツールバー、テレビバー、便利検索バー(Yahoo,Google,辞典検索)などを配布しています。その他、PHP入門 や PHP5ーTIPS、PHPサンプル集、MySQL解説、PHPレンタルサーバー特集などのコーナーもあります。
EOM;

mb_internal_encoding("UTF-8");
mb_regex_encoding("UTF-8");

$token = array();

// すべてのト-クン切り出し
while(1){
    
$bytes mb_ereg("[一-龠]+|[ぁ-ん]+|[ァ-ヴー]+|[a-zA-Z0-9]+|[a-zA-Z0-9]+"$str$match);
    if (
$bytes == FALSE) {
        break;
    } else {
        
$match $match[0];
        
array_push($token$match);
    }
    
$pos strpos($str$match);
    
$str substr($str$pos+$bytes);
}

print_r($token);

?>

powered by PHPコード変換機

出力結果:
Array
(
    [0] => ようこそ
    [1] => phpspot
    [2] => へ
    [3] => 当
    [4] => サイト
    [5] => では
    [6] => フリー
    [7] => の
    [8] => windows
    [9] => 用
    [10] => php
    [11] => 開発環境
    [12] => である
    [13] => PHP
    [14] => エディタ
    [15] => forWin
    [16] => や
    [17] => フリー
    [18] => の
    [19] => PHP
    [20] => スクリプト
    [21] => PHP
    [22] => 掲示板
    [23] => webshot
    [24] => webimager
    [25] => CMS
    [26] => 等
    [27] => PHP
    [28] => ツールバー
    [29] => テレビバー
    [30] => 便利検索
    [31] => バー
    [32] => Yahoo
    [33] => Google
    [34] => 辞典検索
    [35] => などを
    [36] => 配布
    [37] => しています
    [38] => その
    [39] => 他
    [40] => PHP
    [41] => 入門
    [42] => や
    [43] => PHP5
    [44] => TIPS
    [45] => PHP
    [46] => サンプル
    [47] => 集
    [48] => MySQL
    [49] => 解説
    [50] => PHP
    [51] => レンタルサーバー
    [52] => 特集
    [53] => などの
    [54] => コーナー
    [55] => もあります
)
このように簡易形態素解析機が出来ました。
mb_ereg部分をいじることで漢字のみ、カタカナのみという切り出しかたが可能になります。
関連の記事検索:PHP, 正規表現, 形態素解析, regex, 漢字, チュートリアル
スポンサード リンク

By.KJ : 2005年11月07日 16:04 livedoor Readerで購読 Twitterに投稿

間違いの指摘をしていただける方はメール、あるいはTwitter/FBでお願いします(クリック)