在PHP中爆炸没有分隔符的完整字符串

时间:2014-04-07 09:19:47

标签: php arrays function output explode

如果我有一个像BA00008424BA00008425BA00008426这样的字符串。我怎样才能将这些内容分解为:

  • BA00008424
  • BA00008425
  • BA00008426

从这个例子中......

$pizza = "piece1|piece2|piece3|piece4|piece5|piece6";

$pieces = explode("|", $pizza);

这里他们用" | "爆炸但是我希望在下一个" BA "之后爆炸。

提前致谢! :)

8 个答案:

答案 0 :(得分:10)

BA替换为BA[space],然后以空格作为分隔符将其展开,并抓取除第一个之外的所有元素,因为它包含空格:

$str = 'BA00008424BA00008425BA00008426';
$str = str_replace('BA', ' BA', $str);
print_r(array_slice(explode(' ', $str), 1));

<强>输出:

Array
(
    [0] => BA00008424
    [1] => BA00008425
    [2] => BA00008426
)

Demo

答案 1 :(得分:9)

如果BA***的长度始终相同,您可以尝试使用str_split。否则你可以爆炸&#34; BA&#34;并将BA添加到爆炸件中。

答案 2 :(得分:1)

如果数字总是固定长度,您可以使用str_split。

$str = "BA00008424BA00008425BA00008426";
$output = str_split($str, 10);

答案 3 :(得分:1)

您可以使用preg_match_all

<?php
 $str="BA00008424BA00008425BA00008426";
$data=array();
 preg_match_all('/\w{2}\d{8}/', $str, $data);
 print_r($data);
// OUTPUT- Array ( [0] => Array ( [0] => BA00008424 [1] => BA00008425 [2] => BA00008426 ) )
 ?>

答案 4 :(得分:1)

首先,您可以在爆炸后将此值替换为空格

见下面的例子:

$str = "BA00008424BA00008425BA00008426";
$str = str_replace('BA', ',BA', $str);
print_r(array_slice(explode(',', $str), 1));

答案 5 :(得分:0)

$ arr2 = str_split($ str,10);

如果它总是十长

将会发挥作用

答案 6 :(得分:0)

所有代码的长度是否相同?在这种情况下,您可以使用:

$str = 'BA00008424BA00008425BA00008426';
var_dump(str_split($str, 10));

如果它们没有相同的长度,你可以preg匹配它们,但我宁愿以另一种方式保存输入值。

答案 7 :(得分:0)

强制性正则表达式版本。虽然我真的很喜欢Shankar的“插入空间”答案,但正则表达式可能很慢。

那就是说,鉴于你有一个明确的模式(两个字符前缀后跟数字),我认为这是一个值得的选择:

<?php

$subject = 'BA00008424BA00008425BA00008426';
$pattern = '/BA\d+/';

preg_match_all($pattern, $subject, $matches);

print_r($matches);

收率:

Array
(
    [0] => Array
        (
            [0] => BA00008424
            [1] => BA00008425
            [2] => BA00008426
        )

)

此处示例:https://eval.in/133117

希望这有帮助! :)