忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2017/06/25 17:56 |
PHP1-54:PHPでオンライン辞書

Wikipedia日本語版には項目が存在しないマイナーなプロトコル、DICT。
http://en.wikipedia.org/wiki/Dict

DICTプロトコルとは、まあ簡単に言うとネットワーク辞書です。
対応サーバにDICTリクエストを投げると、その結果を返してきてくれます。
いくら探してもびっくりするほど日本語ドキュメントがありません。
Pearパッケージも存在しますが、これまた日本語ドキュメントは存在しません。
Net_Dict 1.0.5 (stable)
http://pear.php.net/package/Net_Dict

仕方ないのでソースとRFC2229を眺めながら試してみます。
http://www.dict.org/rfc2229.txt
まあ最初からメソッドが揃っているのでRFCあんまり意味ないですが。
とりあえず適当にメソッド呼ぶだけで簡単に使えました。

dict.php 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
    require_once "Net/Dict.php";
    $dict=new Net_Dict();
    $dict->connect();
    
    //$ret=$dict->status();
    //$ret=$dict->showServer();
    //$ret=$dict->help();
    //$ret=$dict->showDatabases();
    //$ret=$dict->showStrategies();
    //$ret=$dict->match('ai','substring','jpn-deu');
    //$ret=$dict->define('baisyun yado','jpn-deu');
    
    $dict->disconnect();


デフォルトでDICTサーバのひとつであるdict.orgが登録されているので、特に何もしなくてもいきなり使用できます。
http://www.dict.org/

showDatabasesで使用可能な辞書の一覧とその用途を取得できます。
辞書によって登録されている内容が全く違います。
eastonにイーストン聖書辞典があったり、devilsで悪魔の辞典が引けたりするので楽しいかもしれません。
日本語は何故か日独辞書しかありません。
しかも'ai'が無いのに'baisyun yado'があるとかどんな辞書だよ。

showStrategiesで、検索オプションの一覧が返ってきます。
デフォルトだとsubstring、すなわち全文検索です。
exactで完全一致、reでPOSIX正規表現等が使用できます。
検索したい辞書がわかっている場合は、第三引数に指定します。

matchで語句の検索を行います。
こちらはどのような文字が登録されているかという検索が目的で、具体的な内容までは取得しません。

最終的にdefineで完全一致検索を行い、内容を取得します。
第二引数のサーバを指定しない場合返事が返ってこないことがあるので、特殊な辞書を使用する場合は指定したほうがいいです。

また、statusshowServerhelp等辞書の情報やヘルプを取得するメソッドがあります。
日独辞書の容量が13キロバイトしかないというのはどういうことだ。

日本語ドキュメントが無いのを見てもわかるように、日本語はほぼ対象とされていません。
日本でやるならgoo辞書あたりにHTTPリクエスト投げた方が手っ取り早いです。
まあその場合はパースが面倒ですが。

 

PR


2009/02/19 17:13 | Comments(0) | TrackBack(0) | PHP

トラックバック

トラックバックURL:

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<PHP1-55:PHPでオンライン辞書つづき | HOME | PHP1-53:foreachを自力で実装>>
忍者ブログ[PR]