Autor | Zpráva | ||
---|---|---|---|
dehtak Profil |
#1 · Zasláno: 25. 8. 2011, 15:49:00 · Upravil/a: dehtak
zdravim delam si vlastni template engine a porad nemuzu prijit na ten regulerni vyraz. Potrebuju dostat cast html kodu ktera je oznacena mezi {>>jmeno_blocku} {<<jmeno_bloku}
<html> <head></head> <body> {>>jmeno_bloku} <b>nejakej html kod</b> {<<jmeno_bloku} </body></html> zkousel jsem tento vyraz '/\{>>\w+\}(.*+)\{<<\w+\}/' ale nic to nenajde , nechapu to. Dekuji za radu. A prosim nepiste mi ze mam pouzivat smarty nebo podobny. Delam si vlastni engine kde chci skladat nekolik sablon dohromady do laoutu. |
||
Tori Profil |
#2 · Zasláno: 25. 8. 2011, 16:09:47 · Upravil/a: Tori
Místo (.*+) má být (.*?)
A přidala bych modifikátor s. edit: Nechcete používat syntaxi, která bude trochu podobnější jiným běžně používaným tagům? Totiž {blok} ... {/blok}. |
||
dehtak Profil |
#3 · Zasláno: 25. 8. 2011, 18:13:14
Tori:
„Nechcete používat syntaxi, která bude trochu podobnější jiným běžně používaným tagům? Totiž {blok} ... {/blok}.“ To jsem chtel jenze nahrady pisu taky do zavorek treba < img src="{img}" alt="{alt}"> takze by se mi to pak trosku pletlo nahrady a bloky proto mam bloky oznaceny takto aspon vim kde zacina a kde konci nebo to muzu udelat jak to maj jine template <!-- START BLOCK : jmeno_blocku --> <!-- END BLOCK : jmeno_blocku--> ale ja jsem linej a takovej dlouhej zapis se mi psat nechce :-) |
||
Joker Profil |
#4 · Zasláno: 25. 8. 2011, 18:27:57
dehtak:
„udelat jak to maj jine template“ Takhle to dělá JoresTemplate :-) (ale je to převzaté z FastTemplate) Jinak já myslím (na JoresTemplate jsem už nějaký pátek nehrábnul) bloky nevybírám regulárním výrazem. Najde se jen začátek bloku, vyndá se ten identifikátor a konec bloku se už hledá jako řetězec. Jeden postřeh trochu mimo, ale snad bude užitečný: Není dobré to přehánět s regulárními výrazy. Sice vypadá elegantně když jádro šablonovacího systému tvoří jediný preg_match_all se složitým regulárem řešícím většinu nahrazení, ale dokáže to být nechutně pomalé. Použití jednodušších regulárů ve více krocích nebo reguláru doplněného větvením a řetězcovými operacemi sice nevypadá tak hezky, ale může být daleko rychlejší. |
||
dehtak Profil |
#5 · Zasláno: 25. 8. 2011, 18:32:25
Joker:
„Najde se jen začátek bloku, vyndá se ten identifikátor a konec bloku se už hledá jako řetězec.“ dik za info urcite to zkusim. |
||
dehtak Profil |
#6 · Zasláno: 25. 8. 2011, 19:31:19
uz to funguje
regulerni vyraz by mel byt takto '/\{>>jmeno_blocku\}(.*?)\{<<jmeno_blocku\}/ism' samozrejme prvne je treba najit jmeno bloku vyrazem '/\{>>(\w+)\}/' |
||
Časová prodleva: 5 dní
|
|||
dehtak Profil |
#7 · Zasláno: 30. 8. 2011, 12:28:02 · Upravil/a: dehtak
Nejak jsem to nemohl vyresit . Problem mi delali treba bloky v bloku.
Nakonec jsem to vyresil upravou template power skript ke stahnuti >>>ZDE<<< je to udelany tak, ze treba si vygeneruji menu, ktery bude mit svoji sablonu a pak vsechny vygenerovane veci vlozim do layoutu. On taky template power mel chybu ze mu neslo zadavat na stridacku nahrady a bloky prvne se museli vypsat nahrady a az pak bloky. Pridanim tridy temp se to opravilo. Ted me jenom zajima jak to bude s rychlosti |
||
Časová prodleva: 13 let
|
0