Analizowanie argumentów komend w PHP

Czy istnieje natywny „sposób PHP” do analizowania argumentów polecenia z astring? Na przykład, biorąc pod uwagę następującestring:

foo "bar \"baz\"" '\'quux\''

Chciałbym utworzyć następującearray:

array(3) {
  [0] =>
  string(3) "foo"
  [1] =>
  string(7) "bar "baz""
  [2] =>
  string(6) "'quux'"
}

Próbowałem już wykorzystaćtoken_get_all(), ale zmienna składnia interpolacji PHP (np."foo ${bar} baz") dużo padało na moją paradę.

Wiem dobrze, że mogłem napisać własny parser. Składnia argumentów poleceń jest bardzo uproszczona, ale jeśli istnieje istniejący sposób, aby to zrobić, wolałbym, aby nie było to możliwe.

EDYCJA: Proszę zauważyć, że szukam parsowania argumentów z astring, NIE z linii poleceń / powłoki.

EDYCJA 2: Poniżej znajduje się bardziej wyczerpujący przykład oczekiwanego wejścia -> wynik dla argumentów:

foo -> foo
"foo" -> foo
'foo' -> foo
"foo'foo" -> foo'foo
'foo"foo' -> foo"foo
"foo\"foo" -> foo"foo
'foo\'foo' -> foo'foo
"foo\foo" -> foo\foo
"foo\\foo" -> foo\foo
"foo foo" -> foo foo
'foo foo' -> foo foo

questionAnswers(11)

yourAnswerToTheQuestion