2009-08-20 17 views
1

辞書型サービスを実装しようとしています。 私はdictプロトコルでdict.orgにcURLを使ってphpでリクエストを送ります。 これは私のコードです(将来の読者のために役立つかもしれない独自の作品でいると):予想通り(私は必要としないこと)dict出力をPHPでユーザフレンドリな方法で解析するには?

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "dict://dict.org/define:(hello):english:exact"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$definition = curl_exec($ch); 
curl_close($ch); 

echo $definition; 

サーバは、いくつかのヘッダーと一緒に、定義を返します。応答は次のようになります。私が思っていた

220 miranda.org dictd 1.9.15/rf on Linux 2.6.26-2-686 <auth.mime> <[email protected]> 
250 ok 
150 3 definitions retrieved 
151 "Hello" gcide "The Collaborative International Dictionary of English v.0.48" 
Hello \Hel*lo"\, interj. & n. 
    An exclamation used as a greeting, to call attention, as an 
    exclamation of surprise, or to encourage one. This variant of 
    {Halloo} and {Holloo} has become the dominant form. In the 
    United States, it is the most common greeting used in 
    answering a telephone. 
    [1913 Webster +PJC] 
(... some content removed) 

. 
250 ok [d/m/c = 3/0/162; 0.000r 0.000u 0.000s] 
221 bye [d/m/c = 0/0/0; 0.000r 0.000u 0.000s] 

場合:

A)(すべての余分な情報を返さないためにカールするように指定する方法(または辞書プロトコルにおけるオプション)がありますつまり250 ok [d/m/c = 3/0/162; 0.000r...]

b)dictレスポンスが最もユーザーフレンドリーな方法で表示されない情報を返すことに気づいたでしょう。誰かが私がこれをより良い方法で表示することができる既存のPHPライブラリを知っていたかどうか疑問に思っていました。それ以外の場合は、私自身のコードを作成する必要があります。

c)ほとんどの辞書のウェブサイトがその定義を検索する方法でない場合、どうやってそれを行うのですか?私の理解では、最も包括的な辞書データベースはdict.orgのものです(これはdict protocolをサポートしており、私のcURLリクエストを送信しています)。

ありがとうございました!

答えて

1

私が始める前に、私はdictプロトコルの特定を知らないと言いましょう。

私はあなたがテキストを配信するだけのリクエストを作成することはできないだろうと思っています。破棄したい情報はステータス情報のように見えますので、便利です。各行は、アレイ内の個別のエントリがあるように

  1. アレイにカール応答データを読む:次のように私はこれを処理したい

    方法です。 explode()を使用し、改行文字(\ n)で区切ってこれを行うことができます。

  2. 配列を反復して、$ responseLineで正規表現(または他の形式のパターンマッチング)を実行して定義を見つけます。実際のテキストは数字で始まらない唯一の$ responseLineのようです。

あなたはdictのプロトコルが使用するキャラクタ内容を確認することをお勧めします。私はエラー処理について言及していませんが、それはまっすぐであるはずです。

+0

ありがとうございます! は何をしているのか分かりませんか?私はそれをやって行きました正確にどのようにだ –

+0

。ありがとう! –

関連する問題