0

假设我们有如下字符串:

$string = 'ADJKANKNAKLNKALNFKLANFKLNAKLFNKALN';

假设我们需要声明一个包含前 5 个字符 ( ADJKA)的变量,$string并从原始字符串中删除前 5 个字符。

$first = 'ADJKA';
$string = 'NKNAKLNKALNFKLANFKLNAKLFNKALN';

PHP中是否有任何函数可以在不使用第二个函数的情况下实现这一点?我正在考虑类似于的行为array_splice(),但使用输入字符串而不是输入数组。

(我知道这str_splice()不是原生 php 函数。)

4

2 回答 2

1

简单地:

$string = substr_replace($string, '', 0, 5);

我很闷:

list($five, $string) = preg_split('/(^.{5})/', $string, null,
                                  PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
于 2015-10-22T20:59:57.210 回答
0

php 的非错误版本中,您可以“catch-n-release”前五个字符,\K并将拆分限制为最多 2 个元素。

代码:(演示

$string = 'ADJKANKNAKLNKALNFKLANFKLNAKLFNKALN';

[$first5, $string] = preg_split('~.{5}\K~', $string, 2);

var_export([$first5, $string]);

或者您可以避免\K错误并使用后视。

preg_split('~(?<=.{5})~', $string, 2)

输出:

array (
  0 => 'ADJKA',
  1 => 'NKNAKLNKALNFKLANFKLNAKLFNKALN',
)
于 2021-03-19T00:53:39.367 回答