
_split_str_by_whitespace ( $string, $goal )
_split_str_by_whitespace: 这个函数根据空白字符将一个字符串分割成一个字数组。它通常用于处理来自文本字段或其他来源的输入。
通过在空白字符处进行分割,将一个字符串分割成若干块。
每个返回的块的长度尽可能地接近指定的长度目标,但要注意的是每个块都包括其尾部分隔符。比目标长度长的块被保证没有任何内部空白。
用空定界符连接返回的块,可以无损地重建输入字符串。
输入的字符串必须没有空字符(或者在输出块上的最终转换必须不关心空字符)。
_split_str_by_whitespace(“1234 67890 1234 67890a cd 1234 890 123456789 1234567890a 45678 1 3 5 7 90”, 10 ) ==
array (
0 => ‘1234 67890 ‘, // 11 characters: Perfect split.
1 => ‘1234 ‘, // 5 characters: ‘1234 67890a’ was too long.
2 => ‘67890a cd ‘, // 10 characters: ‘67890a cd 1234’ was too long.
3 => ‘1234 890 ‘, // 11 characters: Perfect split.
4 => ‘123456789 ‘, // 10 characters: ‘123456789 1234567890a’ was too long.
5 => ‘1234567890a ‘, // 12 characters: Too long, but no inner whitespace on which to split.
6 => ‘ 45678 ‘, // 11 characters: Perfect split.
7 => ‘1 3 5 7 90 ‘, // 11 characters: End of $string.
);
function _split_str_by_whitespace( $string, $goal ) { $chunks = array(); $string_nullspace = strtr( $string, "rntvf ", "000000000000" ); while ( $goal < strlen( $string_nullspace ) ) { $pos = strrpos( substr( $string_nullspace, 0, $goal + 1 ), "00" ); if ( false === $pos ) { $pos = strpos( $string_nullspace, "00", $goal + 1 ); if ( false === $pos ) { break; } } $chunks[] = substr( $string, 0, $pos + 1 ); $string = substr( $string, $pos + 1 ); $string_nullspace = substr( $string_nullspace, $pos + 1 ); } if ( $string ) { $chunks[] = $string; } return $chunks; }