あなたはこのように、あなたが期待している正確に何を得るために、その結果を再フォーマットし、各出現を見つけるために正規表現を使用することができます、現在の例を越えて
$s = 'some random string --color=red --is_corvette=true';
preg_match_all(
'/--((?:color|is_corvette)=[\S]+)/',
$s, $matches
);
if ($matches AND $matches[1]) {
foreach ($matches[1] AS $match) {
$match = explode('=', $match);
$result[$match[0]] = $match[1];
}
}
あなたはより多くの一般的な使用のための機能を構築することができます事前定義された可能なキーのセットとそれらのデフォルト値を考慮に入れてください:
function args_from_string($string, $set) {
preg_match_all(
'/--((?:' . implode('|', array_keys($set)) . ')=[\S]+)/',
$string, $matches
);
if ($matches AND $matches[1]) {
foreach ($matches[1] AS $match) {
$match = explode('=', $match);
$set[$match[0]] = $match[1];
}
}
return $set;
}
$predefined_set = [
'color' => 'black',
'is_corvette' => 'false',
'other_arg' => 'value',
// ...
];
$current_set = args_from_string(
'some random string --color=red --is_corvette=true',
$predefined_set
);
文字列をかなり簡単にトークン化することでできます – Pooya
PEARの 'Console_Getopt'クラスを使うことができます。それは 'getopt'のようですが、文字列を受け入れます。 –