/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
regexp - kan man dette?
Fra : Christian Liljedahl


Dato : 25-02-02 23:55

Jeg vil gerne opnå følgende:

($var11 * $var12) + $var117
skal omdannes til
(<input type="text" name="var11"> * <input type="text" name="var12">) +
<input type="text" name="var117">

Der kan være et ukendt antal $... i strengen.
Jeg har prøvet at gennemskue regular expressions, men har ikke kunne knække
den. Er startet på en grim gang if-then-else men regexp må kunne klare det.

preg_replace er sandsynligvis funktionen som kan klare det jeg vil... ikke?

Kan nogen hjælpe? Det ville bare være syper-kyl.

Med venlig hilsen
Christian Liljedahl



 
 
Mogens Meier Christe~ (26-02-2002)
Kommentar
Fra : Mogens Meier Christe~


Dato : 26-02-02 14:11

"Christian Liljedahl" <chrlilje@kfumscout.dk.dk> wrote in message
news:a5efed$jgn$1@sunsite.dk...

> Jeg vil gerne opnå følgende:
> ($var11 * $var12) + $var117
> skal omdannes til
> (<input type="text" name="var11"> * <input type="text" name="var12">) +
> <input type="text" name="var117">
>
> Der kan være et ukendt antal $... i strengen.

Hvis du tillader generelle parrenteser får du problemer: *så vidt jeg
husker* fra automateori er parrentes-ballancering/parsing ikke et "regulært
sprog" (dvs. ikke direkte muligt med regex). Det kræver rekursion eller
lign. ("kontekstfrit sprog").

Nok teori :)

Hvis du havde a+b*c+d-e/f ville det være nemt at finde de enkelte led ved at
splitte først efter + og -, og derefter de enkelte faktorer ved * og / (og
så selvfølgelig huske om det var det ene eller det andet tegn).

MEN: Jeg kan ikke se hvordan man parser

a*(b+c/(e-f))

med regex, ikke uden rekursion (eller lign.) i hvert fald.

Desværre.

Hvad skal du da bruge det til?


--
Mvh. Mogens
B.Sc. i datalogi. Søger IT-job på Fyn!
www.momech.dk



Christian Liljedahl (26-02-2002)
Kommentar
Fra : Christian Liljedahl


Dato : 26-02-02 18:11


Hejsa
Tak for svarene. Jeg har endnu ikke nået at kigge på Jan Hansens forslag -
Det bliver i nat

> Hvad skal du da bruge det til?

Jeg har en række standardværdier som bliver indtastet i en database.
Brugeren taster et udtryk ind, som skal kunne regne på de indtastede
værdier.
I input-felteren kan man teste sit udtryk ved at skrive tal ind med det
samme.

Ok - Det er en rimelig lang historie - Jeg uddyber nærmere når jeg har leget
i nat.

Med venlig hilsen

Christian Liljedahl



Ukendt (26-02-2002)
Kommentar
Fra : Ukendt


Dato : 26-02-02 15:24

Det må blive noget ala:

$str='($var11 * $var12) + $var117';
echo preg_replace("/£(\w+)/","<input type=\"text\"
name=\"$1\">",str_replace("$","£",$str));

husk at bruge ' og ikke " til $str da PHP eller indsætter variable.
den ekstra str_replace er for at komme af med $ i strengen da den kun
matcher røven af strengen i regexp.

jan



Christian Liljedahl (27-02-2002)
Kommentar
Fra : Christian Liljedahl


Dato : 27-02-02 22:40

"Jan Hansen" <jan.dk> wrote in message
news:3c7b9a65$0$39846$edfadb0f@dspool01.news.tele.dk...
> Det må blive noget ala:
>
> $str='($var11 * $var12) + $var117';
> echo preg_replace("/£(\w+)/","<input type=\"text\"
> name=\"$1\">",str_replace("$","£",$str));

Wow - Det virkede bare. Masser af dot-respect til dig, Jan!

Med venlig hilsen
Christian Liljedahl



Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408941
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste