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에 걸리는 걸 감안해보면 연산량이 꽤 차이날 것 같은데요.
고수님들의 의견을 부탁드립니다.
[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 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기