개발 꿀팁/PHP
thinkphp5에서 문자열을 가로채는 방법에는 어떤 것들이 있나요?(두 가지 방법으로 실현)
Jammie
2022. 7. 25. 14:04
반응형
이 글은 씽크피프5에서 문자열을 캡처하는 두 가지 방법(코드)에 대한 소개로 참고가 되므로 도움이 되시기를 바랍니다.
공통의 comon.php에서
방법 1
//문자열 캡쳐
function cut_str($sourcestr,$cutlength)
{
$returnstr='';
$i=0;
$n=0;
$str_length=strlen($sourcestr);//문자열의 바이트 수
while (($n<$cutlength) and ($i<=$str_length))
{
$temp_str=substr($sourcestr,$i,1);
$ascnum=Ord($temp_str);//문자열의 $i비트 문자에 대한 ascii 코드를 가져옵니다
if ($ascnum>=224) //ASCII가 224위보다 높으면,
{
$returnstr=$returnstr.substr($sourcestr,$i,3); //UTF-8 부호화 규격에 따라 3개의 연속된 문자를 단일 문자로 계상한다
$i=$i+3; //실제 Byte는 3입니다
$n++; //문자열 길이계 1
}
elseif ($ascnum>=192) //ASCII가 192보다 높으면,
{
$returnstr=$returnstr.substr($sourcestr,$i,2); //UTF-8 부호화 규격에 따라 두 개의 연속된 문자를 단일 문자로 계상한다
$i=$i+2; //실제 Byte는 2입니다
$n++; //문자열 길이계 1
}
elseif ($ascnum>=65 && $ascnum<=90) //이니셜이면,
{
$returnstr=$returnstr.substr($sourcestr,$i,1);
$i=$i+1; //실제 바이트 수는 여전히 1개이다
$n++; //그러나 전체적인 미관을 고려하여 대문자는 하나의 높은 자로 하였다
}
else //기타 경우 소문자와 반각 구두점을 포함한다,
{
$returnstr=$returnstr.substr($sourcestr,$i,1);
$i=$i+1; //실제 바이트 수는 1개
$n=$n+0.5; //소문자와 반각 구두점 등 상위 반 글자 너비...
}
}
if ($str_length>$i){
$returnstr = $returnstr . "...";//길이 초과 시 끝에 줄임표 붙임
}
return $returnstr;
}
방법2:
//문자열이 생략 부호 이상으로 잘라내기
function subtext($text, $length)
{
if(mb_strlen($text, ‘utf8’) > $length)
return mb_substr($text,0,$length,’utf8′).’ …’;
return $text;
}
템플릿에서 호출하는 방법:
{$tops.title | subtext=18}
반응형