Truncar una cadena a los primeros n caracteres de una cadena y agregar tres puntos si se elimina algún carácter
¿Cómo puedo obtener los primeros n caracteres de una cadena en PHP? ¿Cuál es la forma más rápida de recortar una cadena a un número específico de caracteres y agregar '...' si es necesario?
//The simple version for 10 Characters from the beginning of the string
$string = substr($string,0,10).'...';
Actualizar:
Basado en una sugerencia para verificar la longitud (y también garantizar longitudes similares en cuerdas recortadas y sin recortar):
$string = (strlen($string) > 13) ? substr($string,0,10).'...' : $string;
Entonces obtendrás una cadena de máximo 13 caracteres; 13 (o menos) caracteres normales o 10 caracteres seguidos de '...'
Actualización 2:
O como función:
function truncate($string, $length, $dots = "...") {
return (strlen($string) > $length) ? substr($string, 0, $length - strlen($dots)) . $dots : $string;
}
Actualización 3:
Ha pasado un tiempo desde que escribí esta respuesta y ya no uso este código. Prefiero esta función que evita romper la cadena en medio de una palabra usando la wordwrap
función:
function truncate($string,$length=100,$append="…") {
$string = trim($string);
if(strlen($string) > $length) {
$string = wordwrap($string, $length);
$string = explode("\n", $string, 2);
$string = $string[0] . $append;
}
return $string;
}
Esta funcionalidad se ha integrado en PHP desde la versión 4.0.6. Ver los documentos .
echo mb_strimwidth('Hello World', 0, 10, '...');
// outputs Hello W...
Tenga en cuenta que trimmarker
(los puntos suspensivos de arriba) están incluidos en la longitud truncada.
La extensión Multibyte puede resultar útil si necesita controlar el juego de caracteres de cadena.
$charset = 'UTF-8';
$length = 10;
$string = 'Hai to yoo! I like yoo soo!';
if(mb_strlen($string, $charset) > $length) {
$string = mb_substr($string, 0, $length - 3, $charset) . '...';
}