Función muy útil para "resumir" párrafos que no queremos mostrar largos en la página. Añadirá puntos suspensivos y evita cortar texto por la mitad para que no quede '&aa' de 'á' y cosas similares.
function recortaTexto($string, $maxlen, $addon = '...')
{
if(strlen(strip_tags($string)) <= $maxlen)
{ // Ha de ser HTML válido
return $string;
}
//Tengo que comprobar que el $maxlen no esté cortando un á o algo similar, así que aumento
// maxlen hasta que el siguiente caracter sea un espacio
while ($string[$maxlen+2]!=' '){
$maxlen+=1;
}
$closing_tags = array();
$string = str_replace(chr(0), '', $string);
$string = preg_replace('/(<\/?[a-z][a-z0-9]*[^<>]*>)/im', chr(0) . '\\1' . chr(0), $string);
$result = explode(chr(0), $string);
for($i = 0, $n = count($result), $len = 0; $i < $n; $i++)
{
if($i % 2)
{
if(substr($result[$i], -2, 1) == '/')
{
continue;
}
if($result[$i]{1} == '/')
{
unset($closing_tags[array_search($result[$i], $closing_tags)]);
continue;
}
$closing_tags[$i] = '' . ((strpos($result[$i], ' ') === false) ? substr($result[$i], 1, -1) : substr($result[$i], 1, strpos($result[$i], ' ') - 1)) . '>';
}
else
{
$len += strlen($result[$i]);
if($len >= $maxlen)
{
$len -= strlen($result[$i]);
break;
}
}
}
return implode('', array_slice($result, 0, $i)) . substr($result[$i], 0, $maxlen - $len) . $addon . implode(array_reverse($closing_tags));
}
miércoles, 24 de junio de 2009
viernes, 12 de junio de 2009
Caracteres  y problema "headers already sent"
He estado una temporada codificando con Aptana Studios y teniendo que usar el notepad para editar ciertos scripts, ya que Aptana parece completamente incapaz de mostrar caracteres latinos por mucho que intente modificarlo, motivo por el que voy a cambiar por completo a Zend Studio.
De vez en cuando las páginas me daban un error relativo al session_start sugiriendo que los headers ya se habían mostrado (headers already sent). Tras investigar, vi que se trataba de o bien el notepad estaba dejando algún carácter de codificación delante del primer carácter real o algo raro estaba pasando con la transición al Aptana posteriormente. Hoy empezó a aparecer además la combinación . Descubrí que si guardaba con el Wordpad el problema se solucionaba inmediatamente.
El notepad parece que guarda por defecto en UTF8, lo que provoca conflicto con el ISO-8859-1. Voy a recalcar, por lo tanto, que JAMÁS hay que editar un script en el notepad aunque sea una urgencia o parezca no haber alternativa de momento. Ahora estoy probando el PSPad, que será, asumo, competente.
De vez en cuando las páginas me daban un error relativo al session_start sugiriendo que los headers ya se habían mostrado (headers already sent). Tras investigar, vi que se trataba de o bien el notepad estaba dejando algún carácter de codificación delante del primer carácter real o algo raro estaba pasando con la transición al Aptana posteriormente. Hoy empezó a aparecer además la combinación . Descubrí que si guardaba con el Wordpad el problema se solucionaba inmediatamente.
El notepad parece que guarda por defecto en UTF8, lo que provoca conflicto con el ISO-8859-1. Voy a recalcar, por lo tanto, que JAMÁS hay que editar un script en el notepad aunque sea una urgencia o parezca no haber alternativa de momento. Ahora estoy probando el PSPad, que será, asumo, competente.
lunes, 8 de junio de 2009
Suscribirse a:
Entradas (Atom)