我从外部源接收到一个UUID值,但该字符串不包含任何连字符。
有效的UUID应采用以下格式:
abcdef01-2345-6789-abcd-ef0123456789
如何转换:
$UUID = '42f704ab4ae141c78c185558f9447748';
收件人:
$UUID = '42f704ab-4ae1-41c7-8c18-5558f9447748';
<?php
//$UUID = 42f704ab-4ae1-41c7-8c18-5558f944774
$UUID = "42f704ab4ae141c78c185558f9447748";
$UUID = substr($UUID, 0, 8) . '-' . substr($UUID, 8, 4) . '-' . substr($UUID, 12, 4) . '-' . substr($UUID, 16, 4) . '-' . substr($UUID, 20);
echo $UUID;
这里有另一种方法:
$input = "42f704ab4ae141c78c185558f9447748";
$uuid = preg_replace("/('w{8})('w{4})('w{4})('w{4})('w{12})/i", "$1-$2-$3-$4-$5", $input);
echo $uuid;
类似于将数字字符串格式化为连字符电话号码的答案,您可以合理地使用preg_replace()
或sscanf()
与连接功能的组合。
代码:(演示)(或无字符类)
$UUID = "f9e113324bd449809b98b0925eac3141";
echo preg_replace('/(?:^['da-f]{4})?['da-f]{4}'K/', '-', $UUID, 4);
echo "'n---'n";
vprintf('%s-%s-%s-%s-%s', sscanf($UUID, '%8s%4s%4s%4s%12s'));
echo "'n---'n";
echo implode('-', sscanf($UUID, '%8s%4s%4s%4s%12s'));
输出:
f9e11332-4bd4-4980-9b98-b0925eac3141
---
f9e11332-4bd4-4980-9b98-b0925eac3141
---
f9e11332-4bd4-4980-9b98-b0925eac3141