Tôi đã viết một hàm đệ quy trong PHP để cắt văn bản. Văn bản được cắt sẽ có ... đính kèm vào cuối. Văn bản không cắt sẽ được trả lại ở trạng thái ban đầu.Giá trị trả về hàm đệ quy PHP
Nó hoạt động nếu văn bản phù hợp với chiều rộng tối đa. Tuy nhiên, nếu nó không phù hợp với chiều rộng đã cho thì hàm sẽ không trả về một giá trị nhưng nó nên. Dường như toàn bộ câu lệnh trả về bị bỏ qua. Nếu tôi thay thế trả về bằng echo, nó sẽ hiển thị giá trị chính xác.
Kết quả mong đợi:
-test ZIN
-test ZI
-test Z
-test
-TES
-TE ... (gì được trả lại ở đây vì vậy đây sẽ không bao giờ được hiển thị)
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);
LƯU Ý: chức năng của echo là để gỡ lỗi.
Cảm ơn bạn trước.
Bạn nên đặt những gì hằng số 'SIZE' bằng. Nó sẽ làm cho việc này chạy dễ dàng hơn một chút, vì vậy chúng tôi đang ở trong cùng một sân chơi bóng chày. – Tim
Một chức năng để cắt văn bản? Bạn có thể giải thích thêm một chút về những gì bạn đang cố gắng thực hiện với chức năng này không? – tcables
Bạn nói đúng. Xin lỗi vì điều đó. SIZE = 9 và FONTURL = '/usr/share/fonts/dejavu/DejaVuSans.ttf' –