Avatar billede jck_true Nybegynder
30. oktober 2007 - 15:07 Der er 8 kommentarer og
1 løsning

Udtag stykker fra kode

Hej jeg er igang med at lave et lille php script som udtager codesnippets ud fra nogen start og end tags. Ideen er at man formattere sin code på følgende måde
<?php
//@@Addition@@
    function start() {
        echo 'Noget PHP code';
    }
//@@AdditionEND@@
echo 'Noget mere code'; //Skal ikke med

//Her kommet noget nyt code som er gyldig
@@Test@@
Echo 'More code';
@@TestEND@@

Echo 'Her forsætter det hele';
?>
Ideen er altså man starter med stykket @@<streng>@@ og slutter med @@<streng>END@@
Problemmet ligger i min REGEXP
@@(\w+)@@[\W\w]*@@(\w+)END@@
Hvad er der galt med den?
Den medtager nemlig også stykket imellem sluttaget og start taget
Avatar billede nielle Nybegynder
30. oktober 2007 - 15:12 #1
Du burde hellere lave:

@@(\w+)@@[\W\w]*@@\\1END@@

for så siger "\\1" at det der står på den plads skal matche det i den første () - (måske skal det blot være \1).
Avatar billede nielle Nybegynder
30. oktober 2007 - 15:19 #2
Normalt er * matchningen grådig og derfor vil den tage så meget som muligt.

1) Derfor vil den første "@@(\w+)@@# matche på:

@@Addition@@

2) Den mellemliggende "[\W\w]*" matche på:

    function start() {
        echo 'Noget PHP code';
    }
//@@AdditionEND@@
echo 'Noget mere code'; //Skal ikke med

//Her kommet noget nyt code som er gyldig
@@Test@@
Echo 'More code';

(det er her det grådeige kommer ind!)

3) Og den sidste "@@(\w+)END@@" matche på:

@@TestEND@@
Avatar billede jck_true Nybegynder
30. oktober 2007 - 15:19 #3
YES Du har ret det burde kunne gøre det
Avatar billede jck_true Nybegynder
30. oktober 2007 - 15:20 #4
Hvordan laver jeg et callback til først match
Avatar billede nielle Nybegynder
30. oktober 2007 - 15:21 #5
Ved at ændre til at bruge \\1 (som kaldes for en backreference) fortæller da at, hvis den første matcher på:

@@Addition@@

- så kan den efterfølgende @@\\1END@@ kun matche på:

@@AdditionEND@@
Avatar billede nielle Nybegynder
30. oktober 2007 - 15:21 #6
30/10-2007 15:20:11> Hvad mener du med callback?
Avatar billede jck_true Nybegynder
30. oktober 2007 - 15:22 #7
@@(\w+)@@[\W\w]*@@\1END@@
HAHA skønt
Avatar billede jck_true Nybegynder
30. oktober 2007 - 15:23 #8
Smid et svar nielle
Avatar billede nielle Nybegynder
30. oktober 2007 - 15:26 #9
Svar :^)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester