Autor Zpráva
dehtak
Profil
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
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
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
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
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
uz to funguje
regulerni vyraz by mel byt takto

'/\{>>jmeno_blocku\}(.*?)\{<<jmeno_blocku\}/ism'

samozrejme prvne je treba najit jmeno bloku vyrazem '/\{>>(\w+)\}/'
dehtak
Profil
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

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0