글자 자르기...한글처리 > PHP

본문 바로가기
사이트 내 전체검색

PHP

글자 자르기...한글처리

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 5,837회 작성일 21-02-09 11:38

본문

// 눈에 보이는 숫자만큼 자르기
function cutString($n_subject, $cut_len, $addcha=null){
    //$cut_len 자르고자 하는 글자 수..........
    $str = stripslashes($n_subject);
    $org_str = $str;  //원본살림
    $restr = "";
   
    $i=1;
    while($str)
    {
        preg_match('/^([\xa1-\xfe]{2}|.){1}/s', $str, $tmpstr);
        $str = substr($str,strlen($tmpstr[0]));
        $restr .= $tmpstr[0];
        if($i >= $cut_len) break;
        $i++;
    }
   
    if($restr != $org_str) $restr .= $addcha;
    return $restr;
 }


 // 한글자르기
function cut_str($msg,$cut_size,$tail="..."){
$msg_size=strlen($msg);

for($i=0,$r=0;$i<$cut_size;$i++){
  $real_cut_size++;
  if(ord($msg[$r])>127){//한글일 경우
  $real_cut_size++;
    $r++;//한글일 경우 길이가 2여서 다음값으로 가기 위해서는 +1을 한다.
  }
  $r++;//다음자료를 가져옴
}

if($msg_size<=$real_cut_size){## 글길이 이하로 자를 경우 그냥 리턴한다.
  return $msg;
}else{
  $str=substr($msg,0,$real_cut_size);
  $str.=$tail;
}
return $str;
 }

 ---

 $print = cut_str($list[subject],20,"...");




출처 : http://kanasii79.blog.me/140058352808

 #######  문장 중간에 특정키워드 넣기, 또는 한글글자수대로 짜르기  (break;)

 function php_fn_utf8_to_array($str,$addkey,$cutstr){
          $str = iconv("CP949","utf-8","$str");
    $re_arr = array();   
    $re_icount = 0;
    $reval = "";
    for($i=0,$m=strlen($str);$i<$m;$i++){
        $ch = sprintf('%08b',ord($str{$i}));
        if(strpos($ch,'11110')===0){$re_arr[$re_icount++]=substr($str,$i,4);$i+=3;}
        else if(strpos($ch,'1110')===0){$re_arr[$re_icount++]=substr($str,$i,3);$i+=2;}
        else if(strpos($ch,'110')===0){$re_arr[$re_icount++]=substr($str,$i,2);    $i+=1;}
        else if(strpos($ch,'0')===0){$re_arr[$re_icount++]=substr($str,$i,1);}
    }
   
    if(!$cutstr)$cutstr = mt_rand(40,60);   
    for($i=0;$i<count($re_arr);$i++)
    {
              $reval .= iconv("utf-8","CP949","$re_arr[$i]");
              if($i != 0 && (($i%$cutstr) == 0))
              {
                          $cutstr += mt_rand(40,60);
                          $reval .= "<b>$addkey</b>";
              }
    }
    return $reval;
 }


 ##################################################################
 # 뒤 한글자만 * 처리

function StrCut( $str)
 {
    $result = "";
          $str = trim(stripslashes($str));

                if(Ord( substr($str,-1) ) <= 127  )
                {
                        $result = substr($str,0,-1) . "*";
                }
                else
                {
                        $result = substr($str,0,-2) . "*";
                }
    return $result;
 }

댓글목록

등록된 댓글이 없습니다.

회원로그인

회원가입

  • 게시물이 없습니다.

접속자집계

오늘
359
어제
4,449
최대
6,642
전체
881,921
contact : webmaster@beautipia.co.kr
Copyright © beautipia.co.kr. All rights reserved.