글자 자르기...한글처리
페이지 정보
본문
// 눈에 보이는 숫자만큼 자르기
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;
}
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;
}
- 이전글[세션]브라우져 종료해도 세션이 남아있어 다시 브라우져 켜도 로긴상태인경우 21.02.09
- 다음글칼럼에서 특정한 문자열을 제거하기 21.02.09
댓글목록
등록된 댓글이 없습니다.