메뉴 건너뛰기

프로그램언어

조회 수 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
번호 제목 날짜 조회 수
340 $_FILES 2016.12.23 23847
339 $_SERVER 함수 2016.12.23 23943
338 $_SERVER 환경변수 2016.09.21 33237
337 $_SERVER변수 2014.02.27 24443
336 13자리 timestamp 생성하기 file 2020.09.28 649
335 addslashes — 문자열을 슬래시로 인용 2016.12.23 23083
334 addslashes 함수의 필요성 2015.04.14 24250
333 ajax refresh 시키기(자동리플래쉬) with php file 2017.03.06 23185
332 Ajax로 구연한 실시간 서버시간출력 file 2017.03.06 21031
331 AJAX로 해당 페이지에서 COOKIE 사용하기 2021.03.26 359
330 AJAX를 활용하여 JSON 댓글 처리하기 (PHP) 2018.07.04 8454
329 array (배열) 2015.04.14 24904
328 array_key_exists 배열에서 key가 존재하는지 확인 2016.12.23 22206
327 array_push 배열 끝에 하나 이상의 요소를 추가 2016.12.23 21604
326 array_slice 배열의 일부를 추출 2016.12.23 20775
325 base64 인코딩/디코딩 함수의 특징 file 2018.02.09 13078
324 call_user_func 사용자가 정의한 함수를 호출하여 실행고자 할 때 사용 2016.12.23 21302
323 class_exists 클래스가 정의되었는지 확인 2016.12.23 19881
322 Class를 이용한 DB Connection 소스 (Oracle, MyS 2014.02.27 30503
321 CodeIgniter - DB오류체크, 디버깅 여부 설정 2021.03.29 494
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 17 Next
/ 17

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved