메뉴 건너뛰기

프로그램언어

조회 수 17940 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

동 띄어쓰기는 '네이버랩'에 아이템 체험 코너(;)에 있는 서비스인데 2008년 1월에 처음 등록되었지만 아직까지 API 로 제공되지는 않고 있습니다. 아직 체험 서비스이긴 한데 기능이 개선되고 있는지 아닌지 모르겠네요.
네이버에서 '오픈 API' 라든가 '개발자 센터'를 운영하면서 여러 유용한 프로그램과 서비스를 제공하고 있습니다. 이 외에도 디자이너들에게 유용한 웹표준 관련 정보를 공유하는 '널리'라든가, 네이버의 소식들을 전하는 '네이버 다이어리'나 검색 관련 정보나 팁들을 포스팅하는 '네이버 검색 공식 블로그'들을 운영하고 있습니다. 다만, 이러한 서비스에 대한 관심이 적어서 많은 분들이 활용을 못하고 있다는게 아쉽습니다. 개발자라면 위의 사이트들을 방문해 보시면 좋은 정보를 얻으실 수 있을 듯 합니다.

아무튼, 네이버 자동 띄어쓰기는 API 로 제공되지 않기 때문에, PHP 의 소켓 통신을 이용하여 결과를 요청하고 받아올 수 있습니다.
사실 소켓 통신을 하고 결과를 받아오는 건 좀 복잡한 작업이 이뤄집니다. RFC 표준을 지키며 서버와 통신해야 하는데 이렇게 하는 것도 쉬운일이 아니죠.

그러나 이런 고민은 하지 않아도 됩니다.  PHP.net 의 'PEAR 프로젝트' 중에 'HTTP_Request' 가 있기 때문이죠.
PEAR 프로젝트에서 검색해보면 'HTTP_Request' 와 'HTTP_Request2' 두개가 있는데, 차이점은 'HTTP_Request2' 의 경우 PHP 5 기반으로 작성되어 있어 PHP 5 이상에서만 사용 가능합니다. (현재 'HTTP_Request' 팩키지는 개발이 중단되었습니다.)

여기에서는 PHP 5 기반의 HTTP_Request2 팩키지를 이용하여 사용합니다. (이 팩키지 사용시 Net_URL2 0.2.0 이 설치되어 있어야 하기 때문에 없는 분들은 설치 하시면 됩니다.)
PEAR 설치에 대해서는 이곳을 참고해보세요.

소켓 통신은 기본적으로, ① 주소로 요청 ② 결과 확인 ③ 결과 처리 로 이뤄집니다.
아래 코드는 '자동 띄어쓰기' 주소로 2개의 파라메터값(띄어쓰기할 문자열 포함)을 보낸뒤, 받은 결과를 정규식을 이용해 필요한 부분을 잘라내 결과로 돌려 줍니다. 이러한 일련의 작업은 다른 작업에도 동일하게 적용되기 때문에, 아래 코드를 응용하시면 됩니다.

※ 아래 함수 자체는 자유롭게 응용하여 사용해도 되지만, 취급되는 컨텐츠에 대해서는 저작권법을 위반하지 않는 한도내에서 사용하셔야 합니다. 이는 프로그램과 별개로 저작권법에 해당되는 것이기 때문에, 타 사이트의 내용을 긁어와 상업적으로 사용한다거나 출처를 속이거나, 무단 전재/게제를 금하는 내용을 게재하는 등의 경우 법적 문제가 발생할 수 있습니다.
※ 아래의 '자동 띄어쓰기' 네이버의 서비스를 이용하는 것이기 때문이 이를 이용해 상업적인 용도로 쓰거나, 네이버 서비스임을 감추고 다른 이름으로 서비스 한다거나 하는 등의 사용은 금해주시기 바랍니다.


function AutoSpacing($string) 


{ 


    $request_url = 'http://s.lab.naver.com/autospacing/?'; 


    $post_values = Array( 


        'result_type' => 'paragraph', 


        'query' => $string 


    ); 


  


    if (strlen($string) > 10000) {// 글자수가 10000 글자를 넘는지 확인, 이상일 경우 오류 


        return false; 


    } 


  


    // HTTP_Request2 객체 생성, 생성시 POST 메소드로 설정 및 User-Agent 값 설정 


    $http =&new HTTP_Request2($request_url, 'POST'); 


    $http->setHeader('User-Agent', 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)'); 


    foreach ($post_values as $k => $v) {// POST 시 넘겨줄 파라메터 설정 


        $http->addPostParameter($k, $v); 


    } 


  


    // POST 요청 후 결과 객체를 받음 


    $response = $http->send(); 


    if ($response->getStatus() != 200) {// HTTP 표준 응답 코드가 200 인지 검사 


        return false; 


    } 


  


    // 페이지 결과를 받아서 적용된 횟수와 띄어쓰기된 문자열을 검출 


    $page =&$response->getBody(); 


    if ( ! preg_match('@<P class=result>.*?<STRONG>([\d]+)</STRONG>@i', $page, $m_counts) || 


         ! preg_match('@<DIV style="CLEAR: both" class=wrap_spacing2>.*?<P>(.*?)</P>@is', $page,$m_content)) { 


        return false; 


    } 


  


    return Array( 


        'counts' => $m_counts[1],// 띄어쓰기가 적용된 횟수 


        'string' => trim(strip_tags($m_content[1]))// 띄어쓰기된 문자열 


    ); 


}


List of Articles
번호 제목 날짜 조회 수
200 잡다한 php 2017.03.06 18502
199 PHP 날짜, 시간 관련 함수. date(), mktime() 2017.03.06 16707
198 엑셀(*.xls) 화일을 PHP에서 읽기 2017.03.06 17474
197 그누보드, 여분필드 사용팁 2017.03.06 17606
196 PHP 도메인 이름이나 웹문서 주소 알아내기 2017.03.06 17589
195 게시판 페이징 기법과 개념 file 2017.03.06 17323
194 네이버 지도 API 연동 PHP 소스 2017.03.06 18635
193 다중 도메인에 따른 접속방법 2017.03.06 19370
192 간단한 PHP 파일 업로드, 다운로드 구현 2017.03.06 28547
191 파일 업로드 (중복처리) 2017.03.06 20184
190 POST, GET으로 배열값 받기(직렬화) file 2017.03.06 23288
189 PHP 속도 테스트 20 가지 2017.03.06 18306
188 기본적인 페이징 2017.03.07 24849
187 http://홈주소/?mode=xxx 하는방법 2017.03.07 17642
186 파일 이름에서 확장자 추출마스터 2017.03.07 20061
185 체크박스, post 로 넘기고 받아서 다시 체크하기, checkbox 2017.03.07 21131
184 몫과 나머지 구하기 2017.03.07 18471
183 PHP 날짜/시간 정리 2017.03.07 18629
182 www가 붙은 도메인과 안붙은 같은 도메인, 로그인 세션 유지 2017.03.07 17080
181 php 내장함수 2017.03.07 17004
Board Pagination Prev 1 ... 3 4 5 6 7 8 9 10 11 12 ... 17 Next
/ 17

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved