2010-06-19 10 views
5

Quiero convertir una cadena larga como reallyreallyreallyreallyreallylongfilename en algo así como reallyreallyre...yreallyreally.Reducir una longitud de una cadena PHP e insertar una elipsis

Básicamente, encuentre el medio de la cadena y reemplace todo allí hasta que la longitud de la cadena sea < 30 caracteres incluyendo una elipsis para indicar que ha habido partes de la cadena reemplazadas.

Este es mi código donde he intentado esto:

function cutString($input, $maxLen = 30) 
{ 
    if(strlen($input) < $maxLen) 
    { 
     return $input; 
    } 

    $midPoint = floor(strlen($input)/2); 
    $startPoint = $midPoint - 1; 

    return substr_replace($input, '...', $startPoint, 3); 
} 

que encuentra el centro de la cadena y reemplaza un carácter cada lado con . pero la cosa es que no puedo encontrar la manera de hacer que ciérrelo a 30 caracteres, o lo que sea $maxLen.

Esperemos que entender mi pregunta, no creo que hice un muy buen trabajo en explicar que 8)

Gracias.

Respuesta

8

¿Qué tal:

if (strlen($input) > $maxLen) { 
    $characters = floor($maxLen/2); 
    return substr($input, 0, $characters) . '...' . substr($input, -1 * $characters); 
} 
+0

eso le da una forma que la salida es '...' ... 'reallyreallyreallyreallyreally' al frente de la cadena,. –

+2

Er, debería poner el '...' en el medio de la cadena James, allí hay dos llamadas substrs. – Amber

+0

Sé que hay. Pero si pongo ese código en mi función 'cutString', devuelve una cadena con las elipses en la parte delantera de la cadena. –

Cuestiones relacionadas