반응형
PHP에서 한글 문자열을 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
반응형
'유용한 활용팁' 카테고리의 다른 글
| Adobe Acrobat Reader DC 최근 연 항목 이력 삭제 및 보이지 않게 처리하기 (0) | 2020.06.23 |
|---|---|
| 갤럭시워치 액티브2 44미리 스테인리스 심전도 혈압 측정 방법 - Samsung Health Monitor (0) | 2020.06.22 |
| 갤럭시워치 액티브2 44미리 스테인리스 스트랩 종류 - 가죽, 실리콘, 나일론 밴드 (0) | 2020.06.18 |
| 갤럭시워치 액티브2 44미리 티머니 버스, 지하철 최적의 NFC 태그 위치 (0) | 2020.06.16 |
| PHP 연관 배열의 Key, Value 조회 방법 (0) | 2020.06.15 |