我用 PHP 写了一个递归函数来截取文本。截取后的文本将以 ... 结尾。如果文本未被截取,则返回其原始状态。
如果文本超出最大宽度,函数将不返回值,但它应该返回值。似乎整个 return 语句被忽略了。如果我将 return 替换为 echo,它会显示正确的值。
期望的结果:
-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);
注意:函数中的回显是为了调试。