PHP – String – Generar GUID válido
Función que genera un código GUID válido, formado por caracteres hexadecimales en bloques de 3, 4, 4, 4 y 6 caracteres separados por un guión.
/**
* Class HelperString
*/
abstract class HelperString
{
/**
* Devuevle un GUID válido.
*
* @return string
*/
public static function createGUID()
{
$microTime = microtime();
list($a_dec, $a_sec) = explode(" ", $microTime);
$dec_hex = dechex($a_dec * 1000000);
$sec_hex = dechex($a_sec);
self::guidSetLen($dec_hex, 5);
self::guidSetLen($sec_hex, 6);
$guid = "";
$guid .= $dec_hex;
$guid .= self::guidCrearSeccion(3);
$guid .= '-';
$guid .= self::guidCrearSeccion(4);
$guid .= '-';
$guid .= self::guidCrearSeccion(4);
$guid .= '-';
$guid .= self::guidCrearSeccion(4);
$guid .= '-';
$guid .= $sec_hex;
$guid .= self::guidCrearSeccion(6);
return $guid;
}
/**
* Asignar longitud
* @param $string
* @param $length
*/
private static function guidSetLen(&$string, $length)
{
$strlen = strlen($string);
if ($strlen < $length) {
$string = str_pad($string, $length, '0');
} else {
if ($strlen > $length) {
$string = substr($string, 0, $length);
}
}
}
/**
* Crear sección
* @param $characters
* @return string
*/
private static function guidCrearSeccion($characters)
{
$return = "";
for ($i = 0; $i < $characters; $i++) {
$return .= dechex(mt_rand(0, 15));
}
return $return;
}
}
