Generar cadenas con carácteres aleatorios con PHP

Justamente el otro día pensé que necesitaba hacer una función que generara cadenas con un tamaño específico de carácteres aleatorios y mira tu por dónde, leyendo un artículo me he encontrado con una hecha:

function __randomString($minlength = 20, $maxlength = 20, $useupper = true, $usespecial = false, $usenumbers = true){
        $charset = "abcdefghijklmnopqrstuvwxyz";
        if ($useupper) $charset .= "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        if ($usenumbers) $charset .= "0123456789";
        if ($usespecial) $charset .= "~@#$%^*()_+-={}|][";
        if ($minlength > $maxlength) $length = mt_rand ($maxlength, $minlength);
        else $length = mt_rand ($minlength, $maxlength);
        $key = '';
        for ($i=0; $i<$length; $i++){
            $key .= $charset[(mt_rand(0,(strlen($charset)-1)))];
        }
        return $key;
    }

Me gusta bastante, excepto la parte que determina el tamaño de la cadena devuelta. De un primer vistazo no se entiende (claro que yo soy un poco tonto).

De paso también nos invita a dar una vuelta por la función mt_rand.

Tags: ,

Obtener un número determinado de palabras de una cadena

Para un proyecto he necesitado generar un extracto de un texto que contenga cierto número de palabras. Y ya que ha sido para CakePHP, he creado un Behavior para tal efecto. Mi intención será publicarlo cuando lo tenga un poco más limpio y comentado.

De momento pongo a continuación el código PHP para conseguirlo independientemente de CakePHP:

$words = explode(" ", $cadena, $numero_palabras);
array_pop($words);
$excerpt = implode(' ', $words);

Antes de acabar, decir que antes de este código es necesario limpiar de código HTML la cadena de la que queramos obtener un extracto.

Tags: ,