jeg er ikke sikker. men du kan jo prøve og undersøge det, men der er vidst noget med at reg.epx kan tage det sidste, og første. det vil vidst kunne løse det. jeg er ikke lige nogen ekspert inde for det område. men mon der ikke er andre der er ? ;D
Det er vist en større parser, du skal have skrevet. Parenteser kan jo optræde på alle mulige måder - nestede og ikke. Det bliver meget hurtig en kompleks størrelse =)
Jeg tror, du misforstår, hvad brugeren er ude i. Såvidt jeg har forstået, er det en del af GDLib-ting, der skal outputte et billede med noget matematik. Det er således ikke selve resultatet, der er interessant: http://www.eksperten.dk/spm/827858
- og det bedste er, at når du er færdig, kan du sikkert tjerne en pæn skilling på scriptet. Der er en ikke ringe efterspørgsel på den slags, men et yderst ringe udbud ... det er absolut ikke ukompliceret at lave ;o)
Den nemmeste måde er vel at gennemløbe strengen tegn for tegn - venstre til højre et tegn af gangen. Så har du en tæller som tæller antallet af parenteser op:
if ($detteTegn == "(") { $parentesNiveau++; } else if ($detteTegn == ")") { $parentesNiveau--; }
Når du er nået til den '('-parentes det drejer sig om notere du værdien af $parentesNiveau. Derefter tæller du vidre indtil $parentesNiveau igen har den samme værdi. Den ')'-parentes du så står ved er den som matcher.
Bemærk at dette kun vil fungere hvis parenteserne faltisk er balancerede.
Jeg har nu fundet en løsning der fungerer. Jeg ved ikke om det kan gøres hurtigere... men den bygger på tælle-parenteser-princippet som nielle fremlagde.
Jeg bruger STRPOS() til at finde min første parentes, herefter en WHILE løkke og SUBSTR() til at finde den tilhørende slutparentes ved at lave en tællevariabel (=1) der tæller modsatrettede parenteser ned og ensrettede parenteser op. Hermed er slutparentesen fundet når tælleren i løkken bliver 0 - Da jeg da på det givne tidspunkt har fundet en lige mange ensrettede og modsatrettede parenteser.
Jeg skal nok få lagt et eksempel op snart hvis nogen vil prøve det af!
Men jeg synes lige du, nielle, skal have credits for dit hint!
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.