메뉴 건너뛰기

프로그램언어

조회 수 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
번호 제목 날짜 조회 수
280 PHP와 HTML과 자바스크립트의 관계 2021.03.26 311
279 TIFF, GIF 여러장 변환 file 2021.03.26 323
278 정규표현식 2021.03.26 311
277 date() 함수의 출력 형식 2021.03.26 241
276 확장자 추출 하기 2021.03.26 308
275 서브도메인 세션 공유 2021.03.26 537
274 가변변수로 만든 배열 2021.03.26 272
273 HEREDOC <<< ( PHP에서 echo로 HTML쉽게 표시하기 ) 2021.03.26 371
272 배열 연산자 []= 에 대해서 2021.03.26 231
271 Predefined Variables (미리 정의된 변수들) 2021.03.26 274
270 current() next() key() 그외 배열관련 함수 2021.03.26 253
269 비교연산자 ( === 에 관해서 ) 2021.03.25 307
268 큰따옴표(") 와 작은따옴표(') 2021.03.25 270
267 mysql_free_result(); 관련 오류 2021.03.25 288
266 phpMyAdmin WebMysql 에 CSV 엑셀 파일 업로드 입력하기 ( Excel / Upload / data / 데이터 / 데이타 ) file 2021.03.25 752
265 PHP + 유튜브(youtube) 동영상 업로드 연동 소스 2021.01.21 1135
264 다중파일 업로드 + 이미지 미리보기 (Javascript, jQuery ) file 2020.12.15 912
263 경로 제외한 파일 이름만 선택하는 방법, Basename() 2020.11.23 429
262 쿠키 확인 후 만료시 세션 파괴하는 방법 2020.11.23 314
261 DAUM 지도 API 좌표→주소(주소->좌표) 변환 2020.10.05 431
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 17 Next
/ 17

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved