한글,영문 가리지 않고 문자열 길이대로 짜르기
페이지 정보
작성자 MintState 댓글 0건 조회 12,840회 작성일 08-11-03 10:24본문
한글,영문 가리지 않고 문자열 길이대로 짜르기
문자열 뒤에서 부터 자르기
정규식을 이용한 문자열 자르기
str_cutting("원하는문자열",길이);
<?
//한글,영문 구분하지 않고 길이대로 짜르기
function my_substr($str,$start,$max_len)
{
$arrayString=getArrayString($str);
$count=0;
for($i=0;$i<count($arrayString);$i++)
{
if($count>=$max_len) break;
if($i>=$start){
$return_str.=$arrayString[$i];
$count++;
}
}
return (count($arrayString)>$max_len)?$return_str."..":$str;
}
//바이트 개산 배열
function getArrayBytes($str)
{
$byte1=0; //2바이트 문자의 첫번째 바이트
$byte2=0; //2바이트 문자의 두번쨰 바이트
for($i=0;$i<strlen($str);$i++)
{
if($byte1==1) //2바이트 문자의 첫번째 바이트가 있다면
$byte2=1; //두번쨰 바이트도 있다.
if(ord($str[$i])>127 && $byte1==0){ //2바이트 문자중 한 바이트이고 첫번쨰 바이트가 없다면
$byte2=0; //두번째 바이트는 없고
$byte1=1; //첫번째 바이트는 있다
}else if(ord($str[$i])<=127){
$byte1=0;
$byte2=0;
}
if($byte2==1) //2바이트 문자의 두번째 바이트가 있다면
$byte1=0; //첫번째 바이트는 없다.
$bytes[$i]=$byte1.$byte2;
}
return $bytes;
}
//바이트을 무시한 문자열 배열
function getArrayString($str){
$bytes=getArrayBytes($str);
$k=0;
for($i=0;$i<strlen($str);$i++){
//2바이트 문자가 아닌경우
if($bytes[$i]=="00") { $temp_str[$k]=substr($str,$i,1);$k++; }
//2바이트 문자의 첫번째 경우
//2바이트 문자의 두번째 경우
if($bytes[$i]=="01"){ $temp_str[$k]=substr($str,$i-1,2);$k++;}
}
return $temp_str;
}
//연습----
$str="뮤직abc001"
echo my_substr($str,0,3); ==>"뮤직a"가 출력됩니다..
?>
문자열 뒤에서 부터 자르기
for($i=1;$i<=25;$i++)
{
echo back_cut("문자열을 뒤에서부터 자르기", $i)."\n<br>";
}
function back_cut($str,$len,$head="")
{
if(strlen($str)<=$len)
{
return $str;
}
$str2=substr($str,$len*-1);
$size=strlen($str2);
for($i=$size,$j=1;$j<=$size;$i--)
{
$chr=substr($str2,$j*-1,1);
if(ord($chr)>127)
{
$j++;
$chr=substr($str,$j*-1,1).$chr;
}
$result=$chr.$result;
$j++;
}
return $head.$result;
}
정규식을 이용한 문자열 자르기
str_cutting("원하는문자열",길이);
<?
for ($x=1; $x<35;$x++) {
echo "$x : ".str_cutting("테스트문장 입니다. 잘되지요;;",$x)."<br>";
}
//여기까지는 예제 입니다
function str_cutting($str, $len){
//먼저 무조건 자르고
//한글이 아닌건 한글자씩 세고 다른건 두글자씩 센다
preg_match('/([\x00-\x7e]|..)*/', substr($str, 0, $len), $rtn);
//원래 글 길이가 길면 점점점을 붙여준다(이 아랫줄은 선택)
if ( $len < strlen($str) ) $rtn[0].="...";
return $rtn[0];
}
?>|
|
댓글목록
등록된 댓글이 없습니다.





한글,영문 가리지 않고 문자열 길이대로 짜르기