텍스트를 자르기 위해 PHP에서 재귀 함수를 작성했습니다. 자른 텍스트는 ... 끝에 붙습니다. 자르지 않은 텍스트는 원래 상태로 반환됩니다.PHP 재귀 함수 반환 값
텍스트가 최대 너비에 맞는 경우 작동합니다. 그러나 주어진 너비에 맞지 않으면 함수는 값을 반환하지 않지만 반드시 반환해야합니다. 전체 return 문이 무시 된 것 같습니다. 반향을 반향으로 바꾼다면 정확한 값을 보여줍니다.
예상 결과 :
- TEST ZIN
- TEST ZI
- TEST Z
- TEST
-TES
-TE (아무것도 그래서 여기에 반환되지 않습니다이 표시되지 않습니다)
function check_length($str, $max, $size = SIZE, $rec = false) {
echo "FUNCTION $str ";
list($left, , $right) = imageftbbox($size, 0, FONTURL, $str);
if($rec == false) {
if(($right - $left) > $max) {
echo 'if 1<br />';
check_length(substr($str, 0, -1), $max, $size, true);
} else {
echo 'else 1<br />';
return $str;
}
} else {
if(($right - $left) > ($max - 9)) {
echo 'if 2<br />';
check_length(substr($str, 0, -1), $max, $size, true);
} else {
echo 'else 2<br />';
return "$str...";
}
}
}
echo check_length('TEST ZIN', 30);
참고 :이 기능의 에코는 디버깅 용입니다.
미리 감사드립니다.
상수 'SIZE'는 다음과 같습니다. 이 작업을 조금 더 쉽게 수행 할 수 있으므로 동일한 구장에 있습니다. – Tim
텍스트자를 수있는 기능은 무엇입니까? 이 기능을 사용하여 수행하려는 작업을 조금 더 설명해 주시겠습니까? – tcables
당신 말이 맞아요. 미안합니다. SIZE = 9 및 FONTURL = '/usr/share/fonts/dejavu/DejaVuSans.ttf' –