Ho scritto una funzione ricorsiva in PHP per ritagliare il testo. Il testo ritagliato avrà ... allegato alla fine. Il testo non ritagliato verrà restituito nel suo stato originale.Funzione ricorsiva PHP valore restituito
Funziona se il testo si adatta alla larghezza massima. Tuttavia, se non si adatta alla larghezza specificata, la funzione non restituirà un valore ma dovrebbe. Sembra che l'intera dichiarazione di ritorno sia ignorata. Se sostituisco il ritorno con echo, mostra il valore corretto.
Il risultato atteso:
-TEST ZIN
-TEST ZI
-TEST Z
-TEST
-TES
-TE ... (nulla viene restituito qui quindi questo non sarà mai mostrato)
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);
NOTA: gli echi nella funzione sono per il debug.
Grazie in anticipo.
Si dovrebbe mettere cosa la costante 'SIZE' è uguale a. Farà funzionare questo un po 'più facile, quindi siamo nello stesso campo da baseball. – Tim
Una funzione per ritagliare il testo? Potresti spiegare un po 'di più cosa stai cercando di ottenere con questa funzione? – tcables
Hai ragione. Mi dispiace per quello SIZE = 9 e FONTURL = '/usr/share/fonts/dejavu/DejaVuSans.ttf' –