php - 如何以一定的间隔放置一个字符?

标签 php

我试图在 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/

相关文章:

php - 使用 iOS 缓存 Web 表单

php - 使用 PHP cURL 时服务器停止运行

php - MySQL "thread safe"是否来自 php 脚本?

javascript - 如果我的搜索查询也是对 INDEX 的 GET,Laravel 5 如何编写 GET 路由到 INDEX?

php - HTML 页面中的 JSON 数据在表中

php - 如果 preg_match 不匹配模式,则取消设置数组?

javascript - 刷新后将轮播保持在同一张幻灯片上

PHP/SQL : Sorting

php - 将数据库中的数据转换为列表

php - 从 html 标签之间删除换行符