Avatar billede rix Praktikant
20. januar 2014 - 23:11 Der er 15 kommentarer

Reg if

Jeg er igang med at lave en template engine i PHP

og har lavet en "kode" som ser sådan her ud

<!-- if(....){ -->

jeg ville gerne finde det der står isedet for ....

Jeg har føglende ting der kan være der
[div]
variabel
!variabel
"string"
class.function()
==
!=
<
>
&&
||

og det er selv på samme måde som normal if
altså
eks.
variael == variabel
og ikke
variable variabel ==

Nogle der er en som ville hjælpe?
Avatar billede rix Praktikant
21. januar 2014 - 05:23 #1
rettelse
class.function() skulle være class->function()
Avatar billede repox Seniormester
21. januar 2014 - 05:38 #2
Det virker enormt problematisk at du vil bruge HTML kommmentarer som wrapper til din template engine. Og hvorfor ændre i syntaksen på tilgang til metoder i objekter?

Hvorfor egentlig begynde på at lave en template engine når nu PHP kan klare det bedre selv?
Avatar billede rix Praktikant
21. januar 2014 - 09:41 #3
Hej repox.

Ja men det var lige en hurtig indskydelse. kunne godt have valgt en anden måde.

Fordi jeg gøre det da jeg synes det ville være sjovt at gøre det samt at jeg ville udvikle mig på den måde :)
Avatar billede repox Seniormester
21. januar 2014 - 10:00 #4
Du har i princippet ikke brug for regular expressions hvis bare <!-- og --> skal udskiftes med <?php og ?>. Det kan du klare med en str_replace:

$data = str_replace(array("<!--", "-->"), array("<?php", "?>"), $data);
Avatar billede rix Praktikant
21. januar 2014 - 10:14 #5
Både og men da jeg ikke har valgt en typisk php stil så kan jeg ikke bruge det

bruger regular expressions til at fange alle <!--..-->

og se om de inderholder bestemte ting i staten hvis ikke lades de være
Avatar billede repox Seniormester
21. januar 2014 - 10:15 #6
Det ser da typisk php agtigt ud? Hvad er det du mener der skiller sig ud?
Avatar billede rix Praktikant
21. januar 2014 - 10:23 #7
i min "system" heder det ikke echo $vairabel;

men <!--set variabel-->
ellser set class->function()
Avatar billede repox Seniormester
21. januar 2014 - 11:20 #8
Så "set" svarer til "echo"?
Avatar billede rix Praktikant
21. januar 2014 - 11:31 #9
Ja
Avatar billede repox Seniormester
21. januar 2014 - 11:41 #10
Jamen, du må jo starte med at lave noget der parser din kode; umiddelbart kan du jo løse nogle af de simple ting via str_replace, men noget af genkendelsen skal nok klares med reg exp.

Jeg må erkende at jeg slet ikke forstår din struktur, så det er lidt svært at komme ind på en realistisk løsning, men du kan måske få lidt inspiration fra Laravels Blade template system:

https://github.com/laravel/framework/blob/master/src/Illuminate/View/Compilers/BladeCompiler.php
Avatar billede rix Praktikant
21. januar 2014 - 13:44 #11
det er kun inde imellem () jeg skal bruge

Phpbb bruger denne f.eks

/(?:
            "[^"\\\\]*(?:\\\\.[^"\\\\]*)*"        |
            \'[^\'\\\\]*(?:\\\\.[^\'\\\\]*)*\'    |
            [(),]                                  |
            [^\s(),]+)/x


det er næsten det samme jeg ville have dog skal den også understøtte function(h,j)
og class->function(h,j)

håber det gav lidt mere mening
Avatar billede repox Seniormester
21. januar 2014 - 13:51 #12
Jeg forstår godt hvad du vil, men jeg forstår ikke din struktur.
At "echo" pludselig skal hedde "set" er en større afvigelse og giver absolut ikke nogen mening, hvis du blot vil parse PHP normalt - bare med nogle omdøbninger.

Det er også min umiddelbare holdning at en reg exp ikke alene skal kunne gøre udslaget.
Avatar billede rix Praktikant
21. januar 2014 - 13:55 #13
reg exp ændre ikke på noget.
Den hjælper mig bare med at finde bestemte ting i en html fil og der efter lader den php finde ud af hvad der skal gøres.
Avatar billede repox Seniormester
21. januar 2014 - 14:00 #14
Igen, jeg kan godt se hvad du vil opnå - min holdning er at du skal bygge en parser til formålet.
Avatar billede rix Praktikant
21. januar 2014 - 18:06 #15
fordi jeg har brug for de data så jeg kan hente de ddata fra systemet
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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