D'accord - je vais essayer de répondre à ma propre question. C'est le mieux que j'ai pu trouver :
Paquet :
$binary = pack("h*", str_replace('-', '', $string));
Déballer
$string = unpack("h*", $binary);
$string = preg_replace("/([0-9a-f]{8})([0-9a-f]{4})([0-9a-f]{4})([0-9a-f]{4})([0-9a-f]{12})/", "$1-$2-$3-$4-$5", $string);
Y a-t-il un problème avec cela, tout le monde peut le voir ?