2009-08-20 3 views
1

사전 형식 서비스를 구현하려고합니다. dict.org에 dict 프로토콜로 cURL을 사용하여 PHP로 요청을 보냅니다. 이 내 코드입니다 (미래의 독자들에게 도움이 될 수 있습니다 자신의 작품에 어떤과) : 예상대로 (내가하지 않아도)PHP에서 사용자 친화적 인 방식으로 dict 출력을 구문 분석하는 방법은 무엇입니까?

$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) (모든 추가 정보를 반환하지 않도록 말려 지정하는 방법 (또는 DICT 프로토콜 옵션이) 거기 즉 250 ok [d/m/c = 3/0/162; 0.000r...])

b) dict 응답이 가장 사용자 친화적 인 방법으로 표시되지 않는 정보를 반환하는 것으로 나타 났을 것입니다. 아무도 내가 더 좋은 방법으로 이것을 표시 할 수있게 해주는 기존의 PHP 라이브러리를 알고 있는지 궁금합니다. 그렇지 않으면 내 코드를 코딩해야합니다.

c) 대부분의 사전 웹 사이트가 정의를 검색하는 방식이 아니라면 어떻게해야합니까? 나의 이해에서 가장 포괄적 인 사전 데이터베이스는 dict.org (dict protocol을 지원하며 내 cURL 요청을 보내는 곳)에있는 데이터베이스입니다.

감사합니다.

답변

1

시작하기 전에 내가 사전 프로토콜의 특정 사항을 알지 못한다고 알려주십시오.

텍스트 만 제공하는 요청을 만들 수 있을지 의심 스럽습니다. 폐기하려는 정보는 상태 정보와 유사하므로 유용합니다. 각 라인 배열에 별도의 항목이되도록

  1. 배열로 컬 응답 데이터를 읽고 다음과 같이 나는이 문제를 해결할 것

    방법이다. explode()을 사용하고 줄 바꿈 문자 (\ n)로 분할하면됩니다.

  2. 배열을 반복하면 정의를 찾기 위해 $ responseLine에서 정규식 (또는 다른 형태의 패턴 일치)을 수행하십시오. 실제 텍스트가 숫자로 시작하지 않는 유일한 $ responseLine 인 것 같습니다.

dict 프로토콜에서 사용하는 문자셋을 확인하고 싶을 수 있습니다. 오류 처리에 대해서는 언급하지 않았지만 곧바로 처리해야합니다.

+0

감사합니다. 의 기능을 알고 있습니까? –

+0

정확히 내가 그 일을 어떻게 처리했는지. 감사! –

관련 문제