聪明的方式有条件地分裂这个字符串?

spr*_*man 0 php string parsing

我有一个字符串,可以是两种形式之一:

prefix=key=value (which could have any characters, including '=')
Run Code Online (Sandbox Code Playgroud)

要么

key=value
Run Code Online (Sandbox Code Playgroud)

所以我需要在第一个或第二个等号上拆分它,基于在别处设置的布尔值.我这样做:

if ($split_on_second) {
    $parts = explode('=', $str, 3);
    $key = $parts[0] . '=' . $parts[1];
    $val = $parts[2];
} else {
    $parts = explode('=', $str, 2);
    $key = $parts[0];
    $val = $parts[1];
}
Run Code Online (Sandbox Code Playgroud)

哪个应该有用,但感觉不够优雅.在PHP中有任何更好的想法?(我想有一种正则表达式 - 忍者的方法,但我不是一个正则表达式忍者.;-)

Amb*_*ber 5

编辑:

现在我注意到你从其他地方得到了"如果前缀应该存在与否",在这种情况下,我的原始解决方案可能不那么优雅.相反,我建议的是这样的:

$parts = explode('=', $str);
$key = array_shift($parts);
if($has_prefix) {
    $key .= '=' . array_shift($parts);
}
$val = implode('=', $parts);
Run Code Online (Sandbox Code Playgroud)

.

我最初的回应:

$parts = array_reverse(explode('=', $str));
$val = array_shift($parts);
$key = implode('=', array_reverse($parts));
Run Code Online (Sandbox Code Playgroud)