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中有任何更好的想法?(我想有一种正则表达式 - 忍者的方法,但我不是一个正则表达式忍者.;-)
现在我注意到你从其他地方得到了"如果前缀应该存在与否",在这种情况下,我的原始解决方案可能不那么优雅.相反,我建议的是这样的:
$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)