astur28
Debías haber abierto un nuevo post, pues se trata de un tema distinto y poca gente entrará a este post a ayudarte.
En principio te diría que con substring, tanto en PHP como en MySQL, podrías solucionarlo.
Para eso mira estas direcciones:
http://es.php.net/manual/es/function.substr.php
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_substring
pero te estaría ocultando parte de la verdad, es decir, no te diría que eso cortaría palabras en muchas ocasiones produciendo un efecto poco estético.
Para solucionar ese tema te hago dos propuestas, que son dos funciones:
La primera función corta por número de palabras y no es mía, sino que la he tomado de http://www.forosdelweb.com/f18/cortar-texto-por-palabras-no-por-caracteres-529940/, donde la ofrece GatorV, aunque he tenido que corregir algún detalle. Sólo tienes que indicar por qué número de palabras quieres que te corte y te cortará y añadirá puntos suspensivos, si es que el texto tiene más palabras
Código PHP
<?php
function limit_text($text, $limit) {
if (str_word_count($text) > $limit) {
$words = str_word_count($text, 2);
$pos = array_keys($words);
$text = substr($text, 0, $pos[$limit]) . '...';
}
return $text;
}
$texto="Esto es una prueba de corte de cadena por número de palabras que he encontrado en la Web.";
echo limit_text($texto, 12).'<br>';
Pero si quieres cortar por número de caracteres, te pongo esto otro. Esta segunda función, la que corta por número de caracteres evitando feos cortes de palabras, sí la he programado yo en gran parte y por eso no sé si funcionará del todo bien, aunque la he probado.
Código PHP
<?php
function limitar_texto ($texto, $caracteres) {
if (strlen($texto) > $caracteres) {//si el texto tienes más caracteres de los solicitados
if ($texto[$caracteres -1 ] != " ") {//si el texto al cortarlo no coincide con espacio en blanco
$texto = substr ($texto, 0, $caracteres);//corta el texto por el número de caracteres y corta la última palabra
$corte=strrpos($texto, " ");//buscamos la posición del último espacio en blanco entre palabras, al que siguen las letras cortadas de la última palabra
$texto = substr ($texto, 0, $corte).'...';//cortamos y añadimos puntos suspensivos.
} else {$texto = rtrim(substr ($texto, 0, $caracteres)).'...';}//si coincide con espacio en blanco, corta, elimina el último espacio en blanco y añade los puntos suspensivos
}
return $texto;//si tiene menos, presenta el texto completo
}
$texto2="Esto es una prueba de corte de cadena por número de caracteres sin que se corten palabras";
echo limitar_texto ($texto2, 13);//ejemplo aplicado con el número de caracteres
?>
Usa la que te interese
Suerte
PS: también podría hacerse con wordwrap, poniendo como separación una línea y limitando la presentación del texto a la primera línea. Son opciones