Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.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_Function_Split - Fatal编程技术网

Php 如何使用“拆分”拆分字符-&引用;性格

Php 如何使用“拆分”拆分字符-&引用;性格,php,function,split,Php,Function,Split,我用php生成了一个序列号,这个序列号的长度是16个字符,我想用破折号(-)字符将这个序列号拆分成4个字符,就像这种格式XXXXXXXXXXXXXXXXXXXX,所以我写了这个php代码: for ($d=0; $d<=3; $d++){ $tmp .= ($tmp ? "-" : null).substr($serial,$d,4); } 对于($d=0;$d我将使用和: str_split()将字符串拆分为一个数组,其中每个元素有4个字符。然后,infrade()用破折号将

我用php生成了一个序列号,这个序列号的长度是16个字符,我想用破折号(-)字符将这个序列号拆分成4个字符,就像这种格式XXXXXXXXXXXXXXXXXXXX,所以我写了这个php代码:

for ($d=0; $d<=3; $d++){
     $tmp .= ($tmp ? "-" : null).substr($serial,$d,4);
}
对于($d=0;$d我将使用和:

str_split()
将字符串拆分为一个数组,其中每个元素有4个字符。然后,
infrade()
用破折号将这些数组片段连接在一起

因此,如果我们生成一个随机的
$serial

$serial = substr(md5(uniqid(rand(), true)), 0, 16);
我们会得到类似的结果:

59e6-997f-8446-80a2 
试试这个:

$str   = "xxxxxxxxxxxxxxxx";
echo substr(chunk_split($str, 4, '-'), 0, -1); 
输出:

xxxx-xxxx-xxxx-xxxx
参考:

您可以尝试使用以下工具:

str_split,相当清楚。。。 这是很清楚的,但生成一个数组只是为了使其内爆似乎有点浪费。所以我想知道是否有其他方法

更换preg_后速度更快? 我尝试了一个正则表达式,认为这样就不需要中间数组了。毕竟,既然可以,为什么还要有一个问题呢

这只小野兽寻找4个字符,只要后跟至少一个字符,就会在后面插入斜杠

问题是,结果是速度慢了25%左右:(

chunk_分裂得更快,而且有着同样的薄荷味! Prasanth Bendra给出了一个非常有效的答案,不需要中间数组

$hyphenated=substr(chunk_split($str, 4, '-'), 0, -1); 

结果!这比在16个字符的输入字符串上使用str_split至少快25%,并且与str_split方法一样清晰。

您真的需要substr()吗调用那里?是的,否则在+1结尾将出现
-
,这实际上是最快的方法,因为没有创建中间数组。使用chunk\u split比str\u split快40%左右,经过100000次迭代和16个字符的字符串测量。
$tmpArray = str_split($tmp, 4);
$serialNumber = implode('-', $tmpArray);
$hyphenated = implode( '-', str_split( $str, 4));
$hyphenated = preg_replace('/(.{4})(?=.)/', '$1-', $str);
$hyphenated=substr(chunk_split($str, 4, '-'), 0, -1);