PHP Conference Japan 2024

str_split

(PHP 5、PHP 7、PHP 8)

str_split将字符串转换为数组

描述

str_split(string $string, int $length = 1): array

将字符串转换为数组。

参数

string

输入字符串。

length

块的最大长度。

返回值

如果指定了可选的 length 参数,则返回的数组将被分解成块,每个块的长度为 length,除了最后一个块,如果字符串不能被整除,则最后一个块可能更短。默认的 length1,这意味着每个块的大小为一个字节。

错误/异常

如果 length 小于 1,则会抛出 ValueError 异常。

变更日志

版本 描述
8.2.0 如果 string 为空,现在将返回一个空的 array。以前返回一个包含单个空字符串的 array
8.0.0 如果 length 小于 1,现在将抛出 ValueError 异常;以前,会引发级别为 E_WARNING 的错误,并且函数返回 false

示例

示例 #1 str_split() 的用法示例

<?php

$str
= "Hello Friend";

$arr1 = str_split($str);
$arr2 = str_split($str, 3);

print_r($arr1);
print_r($arr2);

?>

以上示例将输出

Array
(
    [0] => H
    [1] => e
    [2] => l
    [3] => l
    [4] => o
    [5] =>
    [6] => F
    [7] => r
    [8] => i
    [9] => e
    [10] => n
    [11] => d
)

Array
(
    [0] => Hel
    [1] => lo
    [2] => Fri
    [3] => end
)

备注

注意:

在处理多字节编码字符串时,str_split() 将按字节而不是字符进行分割。mb_str_split() 可用于将字符串分割成代码点。grapheme_str_split() 可用于将字符串分割成音素簇。

参见

添加注释

用户贡献的注释 1 条注释

Julian
1 年前
函数 str_split() 并不“知道”单词。以下是 str_split() 的一个“知道”单词的改编版本。

<?php

$array
= str_split_word_aware(
'In the beginning God created the heaven and the earth. And the earth was without form, and void; and darkness was upon the face of the deep.',
32
);

var_dump($array);

/**
* 此函数类似于 str_split(),但此函数保持单词完整;它永远不会拆分单词。
*
* @return array<int, string>
*/
function str_split_word_aware(string $string, int $maxLengthOfLine): array
{
if (
$maxLengthOfLine <= 0) {
throw new
RuntimeException(sprintf('函数 %s() 必须具有至少大于一的行最大长度', __FUNCTION__));
}

$lines = [];
$words = explode(' ', $string);

$currentLine = '';
$lineAccumulator = '';
foreach (
$words as $currentWord) {

$currentWordWithSpace = sprintf('%s ', $currentWord);
$lineAccumulator .= $currentWordWithSpace;
if (
strlen($lineAccumulator) < $maxLengthOfLine) {
$currentLine = $lineAccumulator;
continue;
}

$lines[] = $currentLine;

// 使用当前单词覆盖当前行和累加器
$currentLine = $currentWordWithSpace;
$lineAccumulator = $currentWordWithSpace;
}

if (
$currentLine !== '') {
$lines[] = $currentLine;
}

return
$lines;
}

?>

输出

<?php

array(5) {
[
0]=> string(29) "In the beginning God created "
[1]=> string(30) "the heaven and the earth. And "
[2]=> string(28) "the earth was without form, "
[3]=> string(27) "and void; and darkness was "
[4]=> string(27) "upon the face of the deep. "
}

?>
To Top