반응형

PHP에서 한글 문자열을 substr로 자르게 되면 아래와 같이 깨져서 나오게 됩니다.

substr 한글 깨짐 현상

substr은 1byte씩 자르기 때문에 2byte인 한글은 정상적으로 나오지 않게 됩니다.

한글은 mb_substr 함수를 사용하면 해결이 됩니다.

 

문법은 아래와 같습니다.

앞의 문법은 substr과 같고 마지막 옵션에 인코딩 방식만 지정을 하면 됩니다.

string mb_substr ( string $str , int $start [, int $length = NULL [, string $encoding = mb_internal_encoding() ]] )

string mb_substr(문자열, 시작위치, 나타낼 길이, 인코딩방식);

mb_substr($key, 0, 2, 'utf-8');

 

인코딩 방식은 UTF-8, EUC-KR 둘 중 하나를 넣으면 됩니다.

일반적으로 UTF-8을 넣으면 문제 없이 한글이 깨짐 없이 나오게 됩니다. 

최근 대부분의 웹문서가 UTF-8로 되어 있기 때문입니다. 

만약 웹 문서가 EUC-KR로 지정이 되어 있다면 EUC-KR로 하면 됩니다

아래 소스를 보시면 한번에 이해가 되실 겁니다.

<?php
	header('Content-Type: text/html; charset=utf-8');

  // 보험사 랜딩 URL
  $INSUR_COMP_URL = array (
    "한화손해보험"=>"https://www.hanwhadirect.com",
    "흥국화재해상보험"=>"https://www.eyoudirect.co.kr",
    "롯데손해보험"=>"http://www.lottehowmuch.com/",
    "삼성화재해상보험"=>"https://direct.samsungfire.com",
    "하나손해보험"=>"https://www.educar.co.kr/",
    "현대해상화재보험"=>"https://direct.hi.co.kr/",
    "메리츠화재해상보험"=>"https://store.meritzfire.com/",
    "캐롯손해보험"=>"https://www.carrotins.com/"
  );

	foreach($INSUR_COMP_URL as $key=>$value)
	{
		echo $key . '<br />';
		echo substr($key,0,2) . '***' . '<br />';
		echo mb_substr($key,0,2,'utf-8') . '***';
		echo "<hr />";
	}

/* $result
	한화손해보험
	�***
	한화***
	흥국화재해상보험
	�***
	흥국***
	롯데손해보험
	�***
	롯데***
	삼성화재해상보험
	�***
	삼성***
	하나손해보험
	�***
	하나***
	현대해상화재보험
	�***
	현대***
	메리츠화재해상보험
	�***
	메리***
	캐롯손해보험
	�***
	캐롯***
*/
?>

 

2020/06/15 - [유용한 활용팁] - PHP 연관 배열의 Key, Value 조회 방법

 

PHP 연관 배열의 Key, Value 조회 방법

PHP 연관 배열의 Key, Value 조회 방법입니다. 일반적인 배열은 인덱스 번호에 데이터가 들어가 있는 형태여서 for Loop 을 이용해서 데이터를 조회합니다. 연관 배열은 Key, Value 이렇�

han288.tistory.com

 

반응형

+ Recent posts