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; } }