Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将字符串格式化为序列号_Php_Regex - Fatal编程技术网

Php 将字符串格式化为序列号

Php 将字符串格式化为序列号,php,regex,Php,Regex,我想把字符串格式化成序列号。我想得到这样的东西: AAAAA-BBBBB-ccccccc-DDDDD带有字母数字字符(0-9ABCDEF) 到目前为止,我已经尝试创建一个正则表达式来实现这一点,但我不知道该如何处理。以下是我编写的代码: $output=preg_replace('[0-9ABCDEF]{5}[0-9ABCDEF]{5}[0-9ABCDEF]{5}','$1-$2-$3-$4',$input) 这很基本,但我不能让它工作 $input包含原始字符串;例如A47D2F771AC41

我想把字符串格式化成序列号。我想得到这样的东西:
AAAAA-BBBBB-ccccccc-DDDDD
带有字母数字字符(
0-9ABCDEF

到目前为止,我已经尝试创建一个正则表达式来实现这一点,但我不知道该如何处理。以下是我编写的代码:

$output=preg_replace('[0-9ABCDEF]{5}[0-9ABCDEF]{5}[0-9ABCDEF]{5}','$1-$2-$3-$4',$input)

这很基本,但我不能让它工作

$input
包含原始字符串;例如
A47D2F771AC412BADC4F
(20个字符长)

提前感谢您的宝贵帮助。

您忘记了分组

 preg_replace('([0-9A-F]{5})([0-9A-F]{5})([0-9A-F]{5})([0-9A-F]{5})', ...
#              ^           ^^           ^^           ^^           ^
你忘了分组

 preg_replace('([0-9A-F]{5})([0-9A-F]{5})([0-9A-F]{5})([0-9A-F]{5})', ...
#              ^           ^^           ^^           ^^           ^

试试这种非正则表达式的方法,省得自己头疼:

$pieces = str_split( $input, 5 );

$formatted_input = implode("-", $pieces);

试试这种非正则表达式的方法,省得自己头疼:

$pieces = str_split( $input, 5 );

$formatted_input = implode("-", $pieces);

我觉得这更快了我觉得这也更快了