_split_str_by_whitespace

函数
_split_str_by_whitespace ( $string, $goal )
Access
Private
参数
  • (string) $string The string to split.
    Required:
  • (int) $goal The desired chunk length.
    Required:
返回值
  • (array) Numeric array of chunks.
定义位置
相关方法
normalize_whitespace_usort_terms_by_name_usort_terms_by_idget_post_type_archive_templatewp_list_widgets
引入
3.4.0
弃用
-

_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;
}

常见问题

FAQs
查看更多 >