Php 在第一针之后和之前分开线。最佳版本

Php 在第一针之后和之前分开线。最佳版本,php,regex,string,split,Php,Regex,String,Split,我有字符串,字符串可能包含0个或更多冒号“:” 我需要拆分此字符串并获取2个变量: 1) $before=第一个冒号前的字符串 2) $after=第一个冒号后的字符串 如果字符串不包含冒号,$before和$before必须是空字符串 也就是说,从aa:ss:dd:44 $before=aa和$after=ss:dd:44 我有两个想法,如何做到这一点: (一) (二) 但我认为两者都不是最佳选择,你有更好的主意吗?使用explode: $result = explode(':', $stri

我有字符串,字符串可能包含0个或更多冒号“:”

我需要拆分此字符串并获取2个变量:

1)
$before
=第一个冒号前的字符串
2)
$after
=第一个冒号后的字符串

如果字符串不包含冒号,
$before
$before
必须是空字符串

也就是说,从
aa:ss:dd:44

$before=aa
$after=ss:dd:44

我有两个想法,如何做到这一点:

(一)

(二)


但我认为两者都不是最佳选择,你有更好的主意吗?

使用
explode

$result = explode(':', $string, 2);
if (count($result) == 1) {
    $before = $after = "";
}
else {
    $before = $result[0];
    $after = $result[1];
}

使用
分解

$result = explode(':', $string, 2);
if (count($result) == 1) {
    $before = $after = "";
}
else {
    $before = $result[0];
    $after = $result[1];
}

这一行应该行得通

list($before, $after) = array_pad(explode(':', $string, 2), 2, '');

这一行应该行得通

list($before, $after) = array_pad(explode(':', $string, 2), 2, '');
另一个选择是:

$before = $after = '';
$str = "aa:ss:dd:44";
$ar_fields = explode( ":", $str, 2 );
if ( count( $ar_fields ) > 1 ) {
    $before = $ar_fields[0];
    $after = $ar_fields[1];
}
另一个选择是:

$before = $after = '';
$str = "aa:ss:dd:44";
$ar_fields = explode( ":", $str, 2 );
if ( count( $ar_fields ) > 1 ) {
    $before = $ar_fields[0];
    $after = $ar_fields[1];
}

如果列表中没有
,则会发出通知string@Rob发出通知的是
列表
/
分解
组合如果列表中没有
,则将发出通知string@Rob是
列表
/
分解
组合发出了$limit参数对于explode()。ThanksVery nice
$limit
explode()的参数。谢谢