我试图在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个捕获的组
*是一个量词,表示零个或多个字符
^ $是锚点;他们要求完整的字符串是匹配的(更具体地说,^是字符串的开头,$是结尾).
Regex101演示:https://regex101.com/r/oI1hU0/1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。