如果我有一个像BA00008424BA00008425BA00008426
这样的字符串。我怎样才能将这些内容分解为:
从这个例子中......
$pizza = "piece1|piece2|piece3|piece4|piece5|piece6";
$pieces = explode("|", $pizza);
这里他们用" | "爆炸但是我希望在下一个" BA "之后爆炸。
提前致谢! :)
答案 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
)
答案 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
)
)
希望这有帮助! :)