php字符串分割

2021-09-27
// 在字符串$body中每隔$chunklen长度插入一个字符串$end
chunk_split($body, $chunklen = 76, $end = "\r\n");

// 在字符串$str中每隔$width长度插入一个字符串$break,如果指定$cut为true那么字符串总是在指定width之前的位置被插入
wordwrap($str, $width = 75, $break = "\n", $cut = false);

// 使用$token分隔字符串$string,第二次调用时,不指定$string那么函数将从第一次分隔后的字符串上继续分隔,以此类推,无法分隔时将返回false;指定新的$string将开始新的割
strtok($string, $token);

$body = base64_encode(random_bytes(64));
var_dump($body);
var_dump(strtok($body, 'k'));
var_dump(strtok('k'));
var_dump(strtok('k'));
var_dump(strtok('k'));
var_dump($body);

/* 输出结果
"YC5ntp62FhoW4XutUYcQykCiKVlgRBqQXEJUy5GRiIcCTiezItaAsKwGBk1B2/iQPqQR3W+DRs1ptX0pI2iD6g=="
"YC5ntp62FhoW4XutUYcQy"
"CiKVlgRBqQXEJUy5GRiIcCTiezItaAsKwGB"
"1B2/iQPqQR3W+DRs1ptX0pI2iD6g=="
bool(false)
"YC5ntp62FhoW4XutUYcQykCiKVlgRBqQXEJUy5GRiIcCTiezItaAsKwGBk1B2/iQPqQR3W+DRs1ptX0pI2iD6g=="
*/

// 从$string字符串的$start位置开始返回中$length长度的字符串,失败返回false
// $start为正数则从头开始算,为负数从最后一位开始算;第一位为0,最后一位为-1;$start长度大于$string的长度将返回false
// $length不提供时从$start开始返回到字符串结尾;为正数返回最多$length个字符;为负数则末尾的$length字符串将被忽略;为0,false或null返回空字符串
substr($string, $start, $length = ?);

// 从$string字符串的$start位置开始返回中$length长度的字符串,失败返回false;$encoding为字符串编码
// $start为正数则从头开始算,为负数从最后一位开始算;第一位为0,最后一位为-1;$start长度大于$string的长度将返回false
// $length不提供时从$start开始返回到字符串结尾;为正数返回最多$length个字符;为负数则末尾的$length字符串将被忽略;为0,false或null返回空字符串
// 多字节字符串处理
mb_substr($string, $start, $length = NULL, $encoding = mb_internal_encoding());

// 将字符串$str从$start开始截取保留$width长度的字符,将$trimmarker附加到截取后字符串结尾;$encoding为字符串编码
// $start为负数时从字符串$str结尾往前面计算
mb_strimwidth($str, $start, $width, $trimmarker = "", $encoding = mb_internal_encoding());

// 将字符串$str从$start开始截取保留$length长度的字符,截取按字节数计算,如果截断位置位于多字节字符两个字节的中间,将于该字符的第一个字节开始执行
// $start为负数时从字符串$str结尾往前面计算
// $length为null/空时截取到字符串$str的结尾
// 中文是3字节
mb_strcut($str, $start, $length = null, $encoding= mb_internal_encoding());

去除字符

// $character_mask可以使用..指定范围(1..9)
// 删除字符串左侧的$character_mask字符(默认为空白字符)
ltrim($str, $character_mask = ?);

// 删除字符串右侧的$character_mask字符(默认为空白字符)
rtrim($str, $character_mask = ?);

// 删除字符串两侧的$character_mask字符(默认为空白字符)
trim($str, $character_mask = ?);
{/if}