webForumDet fria alternativet

Regexp för att matcha n antal argument.

PHP

1 svar · 411 visningar · startad av colione

Medlem sedan juni 20014 421 inlägg
Frågan#1

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?

Medlem sedan dec. 20025 483 inlägg
#2
preg_match_all('/(?<=")[^"]+(?=")|\w+/', '[I]command[/I]', $arr, PREG_PATTERN_ORDER);
267 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)