如何在php中拆分字符串?
我有一个类似$str的字符串如何在php中拆分字符串?,php,Php,我有一个类似$str的字符串 $str = "00016cam 321254300022cam 321254312315300020cam 32125433153"; 我想像这样把它分成一个数组。“cam”之前的数字是字符串长度 $splitArray = ["00016cam 3212543", "00022cam 3212543123153", "00020cam 32125433153"] 我尝试了以下代码: $lengtharray = array(); while
$str = "00016cam 321254300022cam 321254312315300020cam 32125433153";
我想像这样把它分成一个数组。“cam”之前的数字是字符串长度
$splitArray = ["00016cam 3212543", "00022cam 3212543123153", "00020cam 32125433153"]
我尝试了以下代码:
$lengtharray = array();
while ($str != null)
{
$sublength = substr($str, $star, $end);
$star += (int)$sublength; // echo $star."<br>"; // echo $sublength."<br>";
if($star == $total)
{
exit;
}
else
{
}
array_push($lengtharray, $star); // echo
print_r($lengtharray);
}
$lengtharray=array();
而($str!=null)
{
$sublength=substr($str,$star,$end);
$star+=(int)$sublength;//echo$star。“
”;//echo$sublength。“
”;
如果($star==$total)
{
出口
}
其他的
{
}
阵列推送($lengtharray,$star);//回声
打印(长阵列);
}
您可以尝试此单行解决方案
$str = explode('**', preg_replace('/\**cam/', 'cam', $str)) ;
你可以试试这个单线解决方案
$str = explode('**', preg_replace('/\**cam/', 'cam', $str)) ;
这个代码对我有用。希望有帮助
$str = "**00016**cam 3212543**00022**cam 3212543123153**00020**cam 32125433153";
$arr = explode("**", $str);
for ($i=1; $i < sizeof($arr); $i=$i+2)
$arr_final[]=$arr[$i].$arr[$i+1];
$str=“**00016**cam 3212543**00022**cam 3212543123153**00020**cam 32125431353”;
$arr=爆炸(“**”,$str);
对于($i=1;$i
这个代码对我很有用。希望有帮助
$str = "**00016**cam 3212543**00022**cam 3212543123153**00020**cam 32125433153";
$arr = explode("**", $str);
for ($i=1; $i < sizeof($arr); $i=$i+2)
$arr_final[]=$arr[$i].$arr[$i+1];
$str=“**00016**cam 3212543**00022**cam 3212543123153**00020**cam 32125431353”;
$arr=爆炸(“**”,$str);
对于($i=1;$i
如果您的字符串不包含星号,恐怕您需要编写一个简单的解析器,它将:
- 从左边取字符,直到它不是数字
- 具有长度的do
substr
- 对未使用的字符串重复前面的步骤
<?php $input = "00016cam 321254300022cam 321254312315300020cam 32125433153"; function parseArray(string $input) { $result = []; while ($parsed = parseItem($input)) { $input = $parsed['rest']; $result[] = $parsed['item']; } return $result; } function parseItem(string $input) { $sLen = strlen($input); $len = ''; $pos = 0; while ($pos < $sLen && is_numeric($input[$pos])) { $len .= $input[$pos]; $pos++; } if ((int) $len == 0) { return null; } return [ 'rest' => substr($input, $len), 'item' => substr($input, 0, $len) ]; } var_dump(parseArray($input));
如果您的字符串不包含星号,那么恐怕您需要编写一个简单的解析器来:
- 从左边取字符,直到它不是数字
- 具有长度的do
substr
- 对未使用的字符串重复前面的步骤
<?php $input = "00016cam 321254300022cam 321254312315300020cam 32125433153"; function parseArray(string $input) { $result = []; while ($parsed = parseItem($input)) { $input = $parsed['rest']; $result[] = $parsed['item']; } return $result; } function parseItem(string $input) { $sLen = strlen($input); $len = ''; $pos = 0; while ($pos < $sLen && is_numeric($input[$pos])) { $len .= $input[$pos]; $pos++; } if ((int) $len == 0) { return null; } return [ 'rest' => substr($input, $len), 'item' => substr($input, 0, $len) ]; } var_dump(parseArray($input));
你试过什么?我试过这个$lengtharray=array();while($str!=null){$sublength=substr($str,$star,$end);$star+=(int)$sublength;//echo$star.“
”;//echo$sublength.“
”;if($star==$total){exit;}else{}数组推送($lengtharray,$star);//echo打印($lengtharray);}但效果不好。您可以使用explode函数从$strSorry创建数组,我的字符串如下所示$str=“00016cam 32125430002CAM 321254312315300020cam 32125431353”不包括**。我不知道如何让普通的爆炸。只尝试substr()。它在每次启动时总是包含三个0还是会更改?您尝试了什么?我尝试了这个$lengtharray=array();while($str!=null){$sublength=substr($str,$star,$end);$star+=(int)$sublength;//echo$star.“
”;//echo$sublength.“
”;if($star==$total){exit;}else{}数组推送($lengtharray,$star);//echo打印($lengtharray);}但效果不好。您可以使用explode函数从$strSorry创建数组,我的字符串如下所示$str=“00016cam 32125430002CAM 321254312315300020cam 32125431353”不包括**。我不知道如何让普通的爆炸。请只尝试substr()。它在每次启动时总是包含三个0,还是会更改?我已尝试一步一步地理解您的函数。这是一个令人敬畏的答案。谢谢。我已经试着一步一步地理解你的功能。这是一个令人敬畏的答案。非常感谢。