메뉴 건너뛰기

프로그램언어

조회 수 11276 추천 수 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
번호 제목 날짜 조회 수
171 정규식 2017.04.13 11302
170 파일시스템, 폼 파일업로드 관련 함수 2017.03.27 13402
» 네이버 자동 띄어쓰기를 이용하기 2017.03.27 11276
168 php 엑셀 다운로드 구현 2017.03.07 15274
167 두 날짜 사이의 차이 구하기 2017.03.07 11714
166 날짜 일수 차이 계산 2017.03.07 12213
165 php 세션 유지시간 늘리기 2017.03.07 13136
164 리다이렉션(페이지 이동)의 3가지 방법, location.href 2017.03.07 12612
163 자릿수만큼 앞에 0 붙이기 2017.03.07 11894
162 세션 시작 / 세션 데이터 추가 / 세션 데이터 삭제 / 세션 종료하기 2017.03.07 11337
161 도메인 앞에 자동으로 WWW를 붙이는 방법 2017.03.07 11606
160 php 내장함수 2017.03.06 10713
159 www가 붙은 도메인과 안붙은 같은 도메인, 로그인 세션 유지 2017.03.06 10665
158 PHP 날짜/시간 정리 2017.03.06 11369
157 몫과 나머지 구하기 2017.03.06 10883
156 체크박스, post 로 넘기고 받아서 다시 체크하기, checkbox 2017.03.06 12314
155 파일 이름에서 확장자 추출마스터 2017.03.06 12496
154 http://홈주소/?mode=xxx 하는방법 2017.03.06 10809
153 기본적인 페이징 2017.03.06 13094
152 PHP 속도 테스트 20 가지 2017.03.06 10777
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 Next
/ 11

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved