[PHP] utf-8 문자열을 주어진 바이트로 자르기

php 에서 제공하는 substr 함수 등을 이용해 주어진 문자를 특정 바이트로 잘라야 하는 경우 영문이나 숫자는 문제가 되지 않지만 한글 등 utf-8 문자에서는 마지막 문자가 정상적으로 표시되지 않는 등의 문제가 발생한다. 이런 경우에 사용하고자 아래 함수를 만들었다. getSubstring 함수는 주어진 문자열을 주어진 길이(byte) 만큼 자른 후 리턴한다. 만약 주어진 길이만큼 자를 때 마지막 문자가 정상적인 […]

Read More

[PHP] 문자열에 포함된 다수의 특정 문자를 순차적으로 치환하기

문자열에 포함된 동일한 다수의 특정 문자를 순차적으로 치환하는 방법이다. 순차적으로 치환한다는 것의 의미가 불분명할 수 있는데.. 예를 들면 이런 것이다. a b a c d 문자열에서 a 를  a_1 b a_2 c d 로 치환하는 것이다. 설명을 자세히 할 능력이 없기 때문에 코드를 보자. <?php $string = ‘test [form] string with [form] replace’; $form = ‘[ id : id_{{idx}} […]

Read More

[PHP] 방문로그에 특정 에이전트 제외하고 로그 남기기

PHP 에서 특정 사용자 에이전트(예: Googlebot 등)를 제외하고 방문로그를 DB에 남기는 코드이다. 방문로그 테이블 구조에 따라 아래 코드는 수정된 후 사용되어야 한다. <?php $_AGENT_EXCLUDE = array( ‘mod_pagespeed’, ‘bot’ ); if (!isset($_SESSION[‘ss_visit_log’]) || !$_SESSION[‘ss_visit_log’]) { if (str_replace($_AGENT_EXCLUDE, ”, $_SERVER[‘HTTP_USER_AGENT’]) == $_SERVER[‘HTTP_USER_AGENT’]) { $sql = ” insert into `{$nt[‘visit_table’]}` ( vi_date, vi_time, vi_referer, vi_agent, vi_ip ) values […]

Read More

[PHP] 마스킹 처리된 문자열 얻기

주어진 utf-8 유니코드 문자열을 마스킹 처리하는 함수이다. <?php function get_masking_string($str, $len1, $len2=0, $limit=0, $mark=’*’) { $arr_str = preg_split(“//u”, $str, -1, PREG_SPLIT_NO_EMPTY); $str_len = count($arr_str); $len1 = abs($len1); $len2 = abs($len2); if($str_len <= ($len1 + $len2)) return $str; $str_head = ”; $str_body = ”; $str_tail = ”; $str_head = join(”, array_slice($arr_str, 0, $len1)); if($len2 > 0) […]

Read More

[PHP] 문자열 인코딩 정보 얻기

영문자나 숫자의 경우는 인코딩이 크게 문제가 되지 않지만 한글의 경우에는 꽤 문제가 된다. php 에서는 인코딩을 확인할 수 있는 함수를 제공해주는데.. b_detect_encoding 함수가 그것이다. 간단하게 아래처럼 코드를 작성 후 실행해보면 문자열의 인코딩을 확인할 수 있다. <?php $str = “가나다라마바사 한글 1234 abc”; if(function_exists(‘mb_detect_encoding’)) { echo mb_detect_encoding($str, “EUC-KR, UTF-8, ASCII”); } else { echo “function not exists”; } […]

Read More