【问题标题】:Extract first n characters from original string while modifying original string -- effectively str_splice()在修改原始字符串时从原始字符串中提取前 n 个字符 - 有效地 str_splice()
【发布时间】:2015-10-22 20:50:47
【问题描述】:

假设我们有这样的字符串:

$string = 'ADJKANKNAKLNKALNFKLANFKLNAKLFNKALN';

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

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

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

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

【问题讨论】:

    标签: php string trim substr array-splice


    【解决方案1】:

    简单地说:

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

    我很无聊:

    list($five, $string) = preg_split('/(^.{5})/', $string, null,
                                      PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
    

    【讨论】:

      【解决方案2】:

      non-buggy versions of php 中,您可以使用\K“catch-n-release”前五个字符,并将拆分限制为最多 2 个元素。

      代码:(Demo)

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

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

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

      输出:

      array (
        0 => 'ADJKA',
        1 => 'NKNAKLNKALNFKLANFKLNAKLFNKALN',
      )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-07
        • 2014-10-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-31
        相关资源
        最近更新 更多