Si habéis programado en PHP seguramente habréis utilizado la función substr que sirve para obtener una subcadena de una cadena de texto mayor tamaño. Por ejemplo:
Obtendríamos como resultado ‘Hola’.
Pero si estamos usando una cadena que contiene código HTML, es posible que se queden etiquetas abiertas y nos de problemas. Por ejemplo:
Obtendríamos como resultado ‘<a h’. Y no es lo que quería.
He encontrado una solución en los comentarios de la propia web de PHP. Sería usar la siguiente función en vez de substr.
/**
* string csubstr ( string string, int start [, int length] )
*
* @author FanFataL
* @param string string
* @param int start
* @param [int length]
* @return string
*/
function csubstr($string, $start, $length=false) {
$pattern = ‘/(\[\w+[^\]]*?\]|\[\/\w+\]|<\w+[^>]*?>|< \/\w+>)/i’;
$clean = preg_replace($pattern, chr(1), $string);
if(!$length)
$str = substr($clean, $start);
else {
$str = substr($clean, $start, $length);
$str = substr($clean, $start, $length + substr_count($str, chr(1)));
}
$pattern = str_replace(chr(1),‘(.*?)’,preg_quote($str));
if(preg_match(‘/’.$pattern.‘/is’, $string, $matched))
return $matched[0];
return $string;
}
?>
Por tanto, si ahora cambiamos substr por csubstr, obtendríamos como resultado ‘<a href=”helloworld.php”>Hello</a>’. Que a la hora de imprimirlo en una web quedaría correctamente.
The Power of Mind es el blog personal de DraXus, orientado a temas de Informática, Software Libre e Internet. Más sobre el autor…
Mola!. Me la apunto :D.
muy bueno gracias