我试图在 PHP 中的字符串中以特定间隔放置破折号。 这是我从 JSON GET 中检索到的字符串:
fb396a80cada446f9e63d871116b8ddf
这就是我需要的字符串:
fb396a80-cada-446f-9e63-d871116b8ddf
如何在间隔处放置破折号?
我试过了,没用:
$mcuuid = $json_decode->id;
$p1 = substr($mcuuid, 0, 7);
$p2 = substr($mcuuid, 8, 12);
$p3 = substr($mcuuid, 12, 15);
$p4 = substr($mcuuid, 16, 19);
$p5 = substr($mcuuid, 20, 31);
$final = $p1 . "-" . $p2 . "-" . $p3 . "-" . $p4 . "-" . $p5;
最佳答案
您可以使用正则表达式来完成。
echo preg_replace('~^(.{8})(.{4})(.{4})(.{4})(.{4})(.*)$~',
'$1-$2-$3-$4-$5',
'fb396a80cada446f9e63d871116b8ddf');
输出:
fb396a80-cada-446f-9e63-d871
.
是任意字符
{}
是您要允许的前面字符/组的字符数。
()
捕获其中找到的值
替换中的 $1
是 1 个捕获组
*
是量词,表示零个或多个字符
^$
是 anchor ;他们要求完整的字符串是匹配项(更具体地说,^
是字符串的开头,$
是结尾)。
Regex101 演示:https://regex101.com/r/oI1hU0/1
关于php - 如何以一定的间隔放置一个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33458580/