테스트 사이트 - 개발 중인 베타 버전입니다

cut_str 코드 좀 이상해요.

· 12년 전 · 1569
common.lib.php에 있는 문자열자르기 함수 cut_str()을 보다가 코드 해석은 했는데, 이렇게까지 복잡하게 코딩할 필요가 있을까 싶은 의문에 이해가 좀 안가서 질문을 올립니다.

[code]
if (strtoupper($g4['charset']) == 'UTF-8') {
$c = substr(str_pad(decbin(ord($str{$len})),8,'0',STR_PAD_LEFT),0,2);
if ($c == '10')
for (;$c != '11' && $c{0} == 1;$c = substr(str_pad(decbin(ord($str{--$len})),8,'0',STR_PAD_LEFT),0,2));
return substr($str,0,$len) . (strlen($str)-strlen($suffix) >= $len ? $suffix : '');
[/code]
UTF-8 부분에 대해 위와같이 되어있는데,
아래와 같이 단순화 될 수 있지 않나요?
[code]
if (strtoupper($g4['charset']) == 'UTF-8') {
$c = ord($str{$len});
while ($c > 127 && $c < 192) $c = ord($str{--$len});
return substr($str,0,$len) . (strlen($str)-strlen($suffix) >= $len ? $suffix: '');
[/code]

$c 값을 내기 위해서 매번 substr(), str_pad(), decbin(), ord() 4개의 함수를 사용하는데 비해 ord()하나만 사용하면 되고, 이게 for loop에 걸리는 걸 감안해보면 연산량이 꽤 차이날 것 같은데요.

고수님들의 의견을 부탁드립니다.

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

게시글 목록

번호 제목
284508
284499
284492
284490
284484
284481
284478
284476
284474
284472
284470
284458
284457
284454
284453
284447
284446
284444
284441
284440