在 PHP 8 中,可以使用 str_split()
函数将一个字符串分割成指定长度的子字符串数组。与 PHP 7 不同的是,在 PHP 8 中,可以使用问号 (?) 来为函数参数设置默认值。因此,可以设置第二个参数 $length
的默认值为 1
。
以下是一个例子:
$str = "abcdefgh";
$split = str_split($str, length: 3);
print_r($split);
在上面的示例中,str_split()
函数将 $str
字符串分割成长度为 3 的子字符串,并将这些子字符串存储在 $split
数组中。length:
语法用于指定 $length
参数的值。注意,在使用问号为参数设置默认值后,需要使用关键字来调用函数,而不是传统的位置参数。
输出结果为:
Array
(
[0] => abc
[1] => def
[2] => gh
)
值得注意的是,在 PHP 8 中,如果字符串的长度不能被 $length
参数整除,则最后一个子字符串可能会比其他子字符串短。如果希望得到相同长度的子字符串,可以使用 str_pad()
函数来在字符串末尾添加填充字符。
例如:
$str = "abcdefgh";
$length = 3;
$pad_char = "*";
// 获取 $str 长度
$str_len = strlen($str);
// 计算需要填充的字符数量
$pad_len = $length - ($str_len % $length);
// 添加填充字符
if ($pad_len > 0) {
$str = str_pad($str, $str_len + $pad_len, $pad_char);
}
// 将字符串分割为相同长度的子字符串
$split = str_split($str, $length);
print_r($split);
在上例中,首先计算了需要填充的字符数量,然后使用 str_pad()
函数添加了 $pad_char
字符,并将长度扩展到 $length
的倍数。最后,使用 str_split()
函数将添加填充字符的字符串分割为长度为 $length
的子字符串。
输出结果为:
Array
(
[0] => abc
[1] => def
[2] => ghi
)