Я написал рекурсивную функцию в PHP для обрезки текста.Обрезанный текст будет ... прикреплен к концу.Не обрезанный текст будет возвращен в исходное состояние.
Работает, если текст соответствует максимальной ширине.Однако, если он не помещается в заданную ширину, функция не будет возвращать значение, но оно должно.Кажется, что весь оператор return игнорируется.Если я заменю возврат на echo, он покажет правильное значение.
Ожидаемый результат:-ТЕСТ ЗИН-ТЕСТ ЗИ-ТЕСТ Z-ТЕСТОВОЕ ЗАДАНИЕ-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);
ПРИМЕЧАНИЕ: эхо в функции предназначено для отладки.
Заранее спасибо.