2009-03-27 20 views
5

Mi sono trovato a richiedere questa funzione e mi chiedevo se esiste già in PHP.Questa funzione esiste in PHP?

/** 
* Truncates $str and returns it with $ending on the end, if $str is longer 
* than $limit characters 
* 
* @param string $str 
* @param int $length 
* @param string $ending 
* @return string 
*/ 
function truncate_string($str, $length, $ending = "...") 
{ 
    if (strlen($str) <= $length) 
    { 
     return $str; 
    } 
    return substr($str, 0, $length - strlen($ending)).$ending; 
} 

Quindi, se il limite è di 40 e la stringa è "La volpe veloce saltato il pigro cane marrone", l'uscita sarebbe "La volpe veloce saltato oltre la cima pigro ...". Sembra il genere di cosa che esisterebbe in PHP, quindi sono rimasto sorpreso quando non sono riuscito a trovarlo.

risposta

2

No, non esiste. Molte librerie forniscono tuttavia come non sei il primo a averne bisogno. per esempio. Smarty

1

Non funziona.

5
$suffix = '...'; 
$maxLength = 40; 

if(strlen($str) > $maxLength){ 
    $str = substr_replace($str, $suffix, $maxLength); 
} 

L'implementazione può variare leggermente a seconda che la lunghezza del suffisso dovrebbe essere contano per la lunghezza totale della stringa.

+0

questo non va bene, perché aggiunge il suffisso di una stringa più breve di $ maxLength. –

+0

È vero, dovresti comunque includerlo nella tua funzione, che esegue solo substr_replace() in base a tale condizione. –

4

Ecco la versione di una riga per chi è interessato

<?php 
    echo (strlen($string) > 40 ? substr($string, 0, 37)."..." : $string); 
?> 
+0

Anche questa è stata la mia prima risposta. Sottragga la lunghezza del tuo suffisso dalla lunghezza della tua stringa, altrimenti avrai un risultato di 43 caratteri –

+0

Buon lavoro ma imho è meglio usare un codice facile da leggere rispetto al codice ternario, a meno che non si tratti di una situazione di estrema velocità in cui sei looping questo un milione di volte. – TravisO

+0

Naturalmente, sono d'accordo. Di qui la mia formulazione per gli interessati. –

Problemi correlati