$string="p1234,p12,p12345,1234,12,12345,12,45678,334,q1255,q67889,q235";
我想将字符串拆分为两部分,但是可以在最后一次出现字符“p”时进行拆分,即在p12345之后进行拆分 我会在下面给出组
$str1=p1234,p12,p12345;
$str2=1234,12,12345;
$str3=q1255,q67889,q235;
答案 0 :(得分:1)
试试:
$string = "p1234,p12,p12345,1234,12,12345";
$parts = explode(',', $string);
$size = count($parts);
$firsthalf = implode(',', array_slice($parts, 0, $size / 2));
$secondhalf = implode(',', array_slice($parts, $size / 2));
答案 1 :(得分:0)
$string="p1234,p12,p12345,1234,12,12345";
$a = explode(',', $string);
$s1 = implode(',', array_slice($a, 0, count($a)/2))
$s2 = implode(',', array_slice($a, count($a)/2))
echo $s1
//⇒ p1234,p12,p12345
echo $s2
//⇒ 1234,12,12345
UPD 重新提出问题。这是p / non-p的答案:
$a = explode(',', $string);
$s1 = implode(',', array_filter($a, function($e) { return $e[0] === 'p'; }))
$s2 = implode(',', array_filter($a, function($e) { return $e[0] !== 'p'; }))
echo $s1
//⇒ p1234,p12,p12345
echo $s2
//⇒ 1234,12,12345
答案 2 :(得分:0)
将最后一次出现 p
$string="p1234,p12,p12345,1234,12,12345";
$x = explode(',', $string);
$count=0;
foreach($x as $v) {
if(strpos($v,'p') !== false) {
$count++;
}
}
echo $firsthalf = implode(',', array_slice($x, $count)).'<br>';
echo $secondhalf = implode(',', array_slice($x, 0, $count));
答案 3 :(得分:0)
试试这个:
$string="p1234,p12,p12345,1234,12,12345";
$x = explode(',', $string);
$x = array_chunk($x, count($x)/2);
$str1 = implode($x[0],',');
$str2 = implode($x[1],',');
答案 4 :(得分:0)
简易解决方案:
使用mb_strrpos()查找最后一个'p'
然后,在结束时使用结果位置作为偏移
使用mb_strpos()搜索其后的第一个逗号
使用mb_substr()获取这两部分
完成。
!注意区别:mb_str r pos()与mb_strpos()!
优雅的解决方案: 如果你想真正分开[逗号] [密码]的第一个组合, 与您的示例匹配,您也可以发出一个mb_split() 那么你只需要为[逗号] [密码]使用正确的正则表达式,我在这里不会详细说明。