将字符串分成两半相等

时间:2014-12-02 12:40:02

标签: javascript php

$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;

5 个答案:

答案 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() 那么你只需要为[逗号] [密码]使用正确的正则表达式,我在这里不会详细说明。