preg_match_all('/(?<=")[^"]+(?=")|\w+/', '[I]command[/I]', $arr, PREG_PATTERN_ORDER);
Hej, egentligen hade den här frågan passat bättre i regexp forumet om vi hade haft kvar ett sådant. ;)
Anyway, det är som så att jag sitter på en php-applikation som returnerar argument som en sträng till en funktion (tänk kommandorads-argument).
strängen som skickas in i funktionen är alltså uppbygd på detta sättet:
kommando "ett kommando med mellanslag" kommando kommando
Det kan även se ut såhär:
kommando kommando
Hade det varit så simpelt att andra kommandot (som egentligen är information som ska skickas till första argumentet efter behandling) inte kunde innehålla mellanslag så man var tvungen att omsluta det med hartassar hade det ju varit simpelt.
Resultatet som jag har tänkt mig är alltså följande på första exemplet:
Array
(
[0] => kommando
[1] => ett kommando med mellanslag // <-- Hartassarna ska alltså inte ingå i strängen efter att de har parseats
[2] => kommando
[3] => kommando
)
Och detta på andra exemplet:
Array
(
[0] => kommando
[1] => kommando
)
Någon idé hur regexet ska se ut?