홈으로 홈으로 | 무료회원가입 | 아이디/비번찾기 | 즐겨찾기
추천음악방송메인홈1대1상담음악방송청취
운.영.자.1대1.상담

온라이브음악방송
온라이브스토어(앱다운로드)
아리랑가요(무료음악채널)
뽕짝아가씨(무료음악채널)
okTrot(무료음악채널)
전통가요(무료음악채널)

환상의뽕짝파티 무료음악
명작트로트메들리 무료음악
트로트메들리관광 무료음악
동영상노래방
가사검색

POP Player
신나는 고스톱
컴퓨터 오목
작은 음악다방
최신 인기가요

보안∵서버∵쿠키
윈도우∵프레임
이미지∵배경
시간∵달력∵계산
상태바∵타이틀바
음악∵영상
폼∵전송∵테이블
키보드∵마우스
효과∵링크∵메뉴
Script∵php
기타
PHP 강좌
윈도우관련팁
웹관련팁
홈페이지제작팁
기본강좌
레지스트리
윈도우서버
리눅스서버
Android
PHP 한글 문자열 자르기
9년 전
[PHP]  한글 문자열 자르기

PHP에서 문자열을 자르기 위해서는 주로 substr 함수를 이용합니다. substr 함수는 문자열을 잘라서 그 잘린 문자열을 되돌려 주는 기능을 가지고 있는데, 자르는 기준이 바이트 단위입니다. 바이트 단위이다 보니까 한글과 같은 2바이트 문자가 포함된 경우 문자열이 온전히 끝나기 전에 잘려지는 경우 뒷 부분이 깨져서 보이게 됩니다.

아래는 substr 함수로 한글문자열을 잘라내는 간단한 예제이고 그 아래는 실행결과 입니다.


<?php
  $title = "겨울비 내려와 머리를 적시네";

  $test = substr($title,0);

  for($i=1; $i < strlen($title); $i++ ){
    $test = substr($title,0,$i);
    echo $i.":".$test."\n<br>";
  }
?>





1:?
2:겨
3:겨?
4:겨울
5:겨울?
6:겨울비
7:겨울비
8:겨울비 ?
9:겨울비 내
10:겨울비 내?
11:겨울비 내려
12:겨울비 내려?
13:겨울비 내려와
14:겨울비 내려와
15:겨울비 내려와 ?
16:겨울비 내려와 머
17:겨울비 내려와 머?
18:겨울비 내려와 머리
19:겨울비 내려와 머리?
20:겨울비 내려와 머리를
21:겨울비 내려와 머리를
22:겨울비 내려와 머리를 ?
23:겨울비 내려와 머리를 적
24:겨울비 내려와 머리를 적?
25:겨울비 내려와 머리를 적시
26:겨울비 내려와 머리를 적시?



한글 문자열을 substr 함수로 잘랐더니 자르기 위한 바이트에 따라서 뒷 부분이 깨지고 있는게 보이실 겁니다. 아래 cutStr 함수는 한글 문자열을 깨끗하게 잘라내기 위해서 작성해 본 함수 입니다.

로직중 눈여겨 보실 부분은 ord 함수로 문자의 아스키 코드값을 체크해서 아스키 코드값이 127보다 클경우 (128부터 한글) 포함된 한글 바이트 수를 더한다는 것입니다. 그리고 마지막에 한글 바이트 수가 짝수로 딱 맞아 떨어질 때는 자르고자 하는 바이트 수 그대로 되돌리고 그렇지 않을 경우 자를 바이트 수에 1을 더한다는 것입니다.
그 이유는 한번 생각해 보시기 바랍니다. 크게 어렵지 않습니다.

<?php
   //한글을 깨끗하게 자르기 위한 함수
   function cutStr($str,$cutbyte)
   {

      $strbyte = strlen($str); //$str 의 바이트 수를 구한다
      if($strbyte <= $cutbyte) return $str;
      for($i=0; $i<$cutbyte;$i++){
         if(ord($str[$i])>127) $hancnt++; //아스키 코드값 128부터 $hancnt를 1씩 증가시킨다
      }

      if($hancnt%2==0) $str = substr($str,0,$cutbyte);
      else $str = substr($str,0,$cutbyte+1);

      return $str;
   }

?>



아래는 cutStr 함수를 사용해서 한글을 잘라내는 예제와 실행화면입니다.

<?php
   $title = "겨울비 내려와 머리를 적시네";
   for($i=1; $i < strlen($title); $i++ ){
      $test = cutStr($title,$i); //cutStr 함수 호출
   echo $i.":".$test."\n<br>";
   }



   //한글을 깨끗하게 자르기 위한 함수
   function cutStr($str,$cutbyte)
   {

      $strbyte = strlen($str); //$str 의 바이트 수를 구한다
      if($strbyte <= $cutbyte) return $str;
      for($i=0; $i<$cutbyte;$i++){
         if(ord($str[$i])>127) $hancnt++; //아스키 코드값 128부터 $hancnt를 1씩 증가시킨다
      }

      if($hancnt%2==0) $str = substr($str,0,$cutbyte);
      else $str = substr($str,0,$cutbyte+1);

      return $str;
   }

?>




1:겨
2:겨
3:겨울
4:겨울
5:겨울비
6:겨울비
7:겨울비
8:겨울비 내
9:겨울비 내
10:겨울비 내려
11:겨울비 내려
12:겨울비 내려와
13:겨울비 내려와
14:겨울비 내려와
15:겨울비 내려와 머
16:겨울비 내려와 머
17:겨울비 내려와 머리
18:겨울비 내려와 머리
19:겨울비 내려와 머리를
20:겨울비 내려와 머리를
21:겨울비 내려와 머리를
22:겨울비 내려와 머리를 적
23:겨울비 내려와 머리를 적
24:겨울비 내려와 머리를 적시
25:겨울비 내려와 머리를 적시
26:겨울비 내려와 머리를 적시네







※ int ord(string string);
    ord string에서 첫번째 문자의 아스키코드값을 반환합니다.

추천추천 : 174 추천 목록
번호 제목
3,026
 여러 도메인들 간 쿠키 공유하기
3,025
 태그 사이에 있는 텍스트를 추출
3,024
 [JQuery] textbox focus on off일때 숫자 콤마 보여주기
3,023
 쿠키 생성,가져오기,삭제
3,022
 사용자 함수 모음
3,021
 마우스,키보드 제한 ( 오른쪽클릭,드래그,영역선택등..)
3,020
 [HTML5] <video> - DOM으로 제어하기
3,019
 HTML5 video 태그에서 영상 좌우반전
3,018
 PHP - 특정 태그 및 문자열 추출, 제거
3,017
 [PHP] define과 defined의 차이
3,016
 우클릭 완벽차단 스크립트
3,015
 iframe 높이 100% 맞추기
3,014
 curl 함수를 이용한 HTTP REFERER 변경
3,013
 윈도우10 시스템 파일 및 Dism 검사
3,012
 텍스트 줄바꿈, 글자자르기 CSS
3,011
 jQuery Mobile에서 유용한 코드 10가지.
3,010
 [PHP] dirname()함수와 $_SERVER 관련 상수들
3,009
 [PHP] 파일 크기, 사이즈 불러오는 함수, filesize()
3,008
 [jQuery] jQuery Quick API
3,007
 [ transition ] 링크 hover 색상 변화 속도 조절
3,006
 PHP 5.3.0 에서 사라진 함수들 대체
3,005
 어떤 파일들이 include 나 require 되었는지 확인하는 함수(get_included_files)
3,004
 PHP 날짜 형식 및 계산하기(날짜 더하고 빼기)
3,003
 jQuery Mobile에서 유용한 코드 10가지.
3,002
 값이 배열 안에 존재하는지 확인하는 in_array함수
3,001
 사용자가 웹브라우저에서 뒤로가기를 했을때 감지하는 방법
3,000
 [jQuery]버튼 활성화, 비활성화
2,999
 jQuery show() / hide() / toggle() 사용법
2,998
 jquery 여러가지 이벤트
2,997
 border-radius 속성
2,996
 네이버 오픈API 음성합성 API 사용하는 PHP 샘플코드
2,995
 UTF8 한글 자르기..
2,994
 iconv 에러 발생시 계속 처리하기 옵션
2,993
 [PHP] 현재 페이지의 도메인 , URL 정보 알아내기.
2,992
 [PHP] 막강 기능 배열..
목록
추억의가요방(가사포함)
인기절정뽕짝파티
인기트로트모음
지루박디스코메들리
밤무대애창곡
전자올겐경음악
세월따라노래따라
가슴시린트로트
트로트쌍쌍파티
7080추억속으로
종합성인가요방
못잊을옛날노래
카바레 음악
트롯디스코팡팡
관광 메들리
트롯카페
가요감상실
추억의옛노래
스페셜가요광장
BillBoard Free
추천가요모음
경음악.전자올겐
스페셜음악여행
WOLRD POPs
K-POP\BillBoard
POP TOP BEST

최신인기가요특집
추천가요\인기
F뮤직 인기\발라드
F뮤직 애창\트로트
트로트성인가요
인기가요
프리미엄 POP
경음악\기타
프리미엄 최신가요
프리미엄 성인가요
가요축제\트롯1번지
댄스\메들리\리믹스
카페\명상\경음악\기타
뮤직트로트 부산광역시부산진구 가야동 ㅣ 개인정보취급방침
Copyright (C) musictrot All rights reserved.