【问题标题】:How to split a string in multiple ones (Php)?如何将一个字符串拆分为多个(Php)?
【发布时间】:2015-11-22 20:46:10
【问题描述】:

我想将一个大数字/字符串(例如 123456789123456789)拆分为 6 个较小的字符串/数字,每个字符串 3 个字符。所以结果将是123456789123456789。我该怎么做?

【问题讨论】:

  • 我的意思是 6 个变量,而不仅仅是将它们分开。例如 $small[0] = 123, $small[1] = 456 等等..
  • 你可以用$small = explode(' ', chunk_split($yourString, 3, ' '));试试这个$yourString是你的号码

标签: php regex parsing


【解决方案1】:

使用chunk_split():

$var = "123456789123456789";
$split_string = chunk_split($var, 3); // 3 is the length of each chunk

如果你希望你的结果是一个数组,你可以使用str_split():

$var = "123456789123456789";
$array = str_split($var, 3); // 3 is the length of each chunk

【讨论】:

  • 对于数字“12345”,结果将是“123”“45”,但我认为他想得到“12”“345”
  • 为此,您可以使用 strrev: `$result = strrev(chunk_split (strrev($var), 3, ' ')));
  • @AntonTodua - but I think that he want get "12" "345" - 他在哪里说的?如果为真,则正则表达式为 \d{1,3}(?=\d{3})|\d{1,3}
【解决方案2】:

您可以使用chunk_split() 函数。 它将字符串拆分成更小的字符串

$string = "123456789123456789";
echo chunk_split ($string, 3, " ");

会输出

123 456 789 123 456 789 

第一个参数是要分块的字符串。第二个是块长度,第三个是你想要的每个块的末尾。

更多信息请见PHP manual

【讨论】:

    【解决方案3】:

    你可以这样做:

    $string = '123456789123456789';
    preg_match_all('/(\d{3})/', $string, $matches);
    print_r($matches[1]);
    

    输出:

    Array
    (
        [0] => 123
        [1] => 456
        [2] => 789
        [3] => 123
        [4] => 456
        [5] => 789
    )
    

    \d 是一个数字,{3} 是先前找到的字符的 3 个(在本例中是一个数字。

    ....

    或者如果不总是有偶数分组:

    $string = '12345678912345678922';
    preg_match_all('/(\d{1,3})/', $string, $matches);
    print_r($matches[1]);
    

    输出:

    Array
    (
        [0] => 123
        [1] => 456
        [2] => 789
        [3] => 123
        [4] => 456
        [5] => 789
        [6] => 22
    )
    

    演示:https://regex101.com/r/rX0pJ1/1

    【讨论】:

    • 如果字符串不能被 3 整除会怎样?
    • 不包含 3*n 位的数字是错误的。例如“12345”。
    • 针对非偶数 3 发布的更新。更新时投反对票和反对票撤回,为什么?
    • @chris85 询问 S.O 用户投票就像问风为什么会吹
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    • 2021-01-30
    • 2017-11-21
    • 2012-08-25
    相关资源
    最近更新 更多