2012-02-09 17 views
14

Estoy tratando de truncar algo de texto en PHP y me he tropezado con este método (http://theodin.co.uk/blog/development/truncate-text-in-php-the-easy-way.html), que a juzgar por los comentarios parece una gran solución fácil de implementar. El problema es que no sé cómo implementarlo: S.¿Truncar texto en PHP?

¿Alguien me importaría indicarme qué hacer para implementar esto? Cualquier ayuda que sea apreciada.

Gracias de antemano.

+1

es lo que no entienden sobre 'substr()'? ¿Dónde te estás confundiendo? Es una función que devuelve parte de la cadena fuente, en función de los parámetros que le proporcione. – Brad

+1

Sí, simplemente use 'substr()' el primer parámetro es su texto, el segundo es el desplazamiento - si se establece en 0, se truncará desde el principio si se establece en 1,2,3 ... se truncará después de ese caracteres, el tercer argumento es la longitud que se debe truncar. Por ejemplo, 'substr (" hello world ", 3, 4)' devolverá 'lo w' - 4 caracteres después de 3. –

+0

posible duplicado de [Truncar una cadena multibyte a n caracteres] (http://stackoverflow.com/questions/2154220/truncate-a-multibyte-string-to-n-chars) – Gordon

Respuesta

51

Lo más obvio es leer documentation.

Pero para ayudar a: substr($str, $start, $end);

$str es su texto

$start es el índice de personaje para comenzar a. En tu caso, es probable 0, lo que significa el comienzo.

$end es donde truncar a las. Supongamos que quiere terminar con 15 caracteres, por ejemplo. Se podría escribir así:

<?php 

$text = "long text that should be truncated"; 
echo substr($text, 0, 15); 

?> 

y que se obtendría esto:

long text that 

tiene sentido?

EDITAR

El enlace que dio es una función para encontrar el último espacio en blanco después de cortar el texto a una longitud deseada, de manera que no se corte en el medio de una palabra. Sin embargo, le falta una cosa importante: la longitud deseada para pasar a la función en lugar de asumir siempre que desea que sea de 25 caracteres. Así que aquí está la versión actualizada:

function truncate($text, $chars = 25) { 
    if (strlen($text) <= $chars) { 
     return $text; 
    } 
    $text = $text." "; 
    $text = substr($text,0,$chars); 
    $text = substr($text,0,strrpos($text,' ')); 
    $text = $text."..."; 
    return $text; 
} 

Así, en su caso, usted podría pegar esta función en el archivo functions.php y lo llaman así en su página:

$post = the_post(); 
echo truncate($post, 100); 

Esto cortar su puesto hacia abajo hasta la última aparición de un espacio en blanco antes o igual a 100 caracteres. Obviamente, puede pasar cualquier número en lugar de 100. Lo que sea que necesite.

+0

¿Comienzo de un haiku? –

+0

definitivamente. Casi positivamente muy malo. –

+0

Gracias por la ayuda, intento dar sentido a esto. Disculpas de antemano si salgo estúpido. Entonces, ¿pondré esa cadena del sitio web al que me he vinculado en algo así como un archivo functions.php (estoy usando WordPress)? Lo que estoy diciendo es ¿dónde declaro esa función? – realph

3
$mystring = "this is the text that I would like to had truncated"; 

// Pass your variable to the function 
$mystring = truncat($mystring); 

// Truncated tring printed out; 
echo $mystring; 


//truncate text function 
public function truncate($text) { 

    //specify number fo characters to shorten by 
    $chars = 25; 

    $text = $text." "; 
    $text = substr($text,0,$chars); 
    $text = substr($text,0,strrpos($text,' ')); 
    $text = $text."..."; 
    return $text; 
} 
3
$text="abc1234567890"; 

// truncate to 4 chars 

echo substr(str_pad($text,4),0,4); 

Esto evita el problema de truncar una cadena de 4 a 10 caracteres Char .. (es decir, la fuente es menor que el requerido)

+0

¡Eso es exactamente lo que necesitaba! :RE –

Cuestiones relacionadas