[PHP] parser blocks

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • S_tef
  • Registratie: December 2004
  • Laatst online: 20-09 12:29
Hey,

ik ben bezig met met template parser, maar ik kom er met de blocks niet uit, omdat ik ff wou checke of me preg_replace_all klopte, heb ik even dit gedaan.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
        function block($block)
        {
            if(preg_match_all("/<!-- START BLOCK : " . $block . " -->(.+)<!-- EINDE BLOCK : " . $block . " -->/i", $this->inhoud, $arr))
            {
                echo "Ja, bevat block(s)!";
            }
            else
            {
                echo"Nee, bevat geen block!";
            }

        echo $arr[0];
        }


Maar helaas zegtie dat er geen block is, maar dit toch echt wel is. Wnat dit staat in de .tpl file:
<!-- START BLOCK : test --><br><br><!-- EINDE BLOCK : test -->

Wie kan me verder helpen?
Alvast bednakt!

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:44

crisp

Devver

Pixelated

s-modifier gebruiken, want waarschijnlijk zitten er newlines tussen.
En anders bevat $this->inhoud niet wat je denkt dat het zou moeten bevatten, of je roept de method niet goed aan.

[ Voor 57% gewijzigd door crisp op 16-05-2005 22:59 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • S_tef
  • Registratie: December 2004
  • Laatst online: 20-09 12:29
Bedankt, het werkt nu, helemaal niet aan gedacht!

Edit, nog 1 vraagje, als er niets tussen staat, dus als er dit staat: <!-- BEGIN BLOCK : blaat --><!-- EINDE BLOCK : blaat -->
Dan zegtie dat er geen block is, hoe kan ik ervoor zorgen dat hij wel 'denkt' dat die er is?

[ Voor 71% gewijzigd door S_tef op 17-05-2005 07:46 ]


Acties:
  • 0 Henk 'm!

  • mjax
  • Registratie: September 2000
  • Laatst online: 20:52
S_tef schreef op dinsdag 17 mei 2005 @ 07:20:
Bedankt, het werkt nu, helemaal niet aan gedacht!

Edit, nog 1 vraagje, als er niets tussen staat, dus als er dit staat: <!-- BEGIN BLOCK : blaat --><!-- EINDE BLOCK : blaat -->
Dan zegtie dat er geen block is, hoe kan ik ervoor zorgen dat hij wel 'denkt' dat die er is?
I.p.v. (.+) doe je (.*)

Overigens gaat je constructie niet werken met nested blocks. Heb je daaraan gedacht of is ondersteuning voor nested blocks niet nodig? Mocht je hiermee aan de slag willen gaan dan raad ik je aan naar een stack-based parser over te stappen voor het parsen van je templates.

[ Voor 28% gewijzigd door mjax op 17-05-2005 08:10 ]


Acties:
  • 0 Henk 'm!

  • S_tef
  • Registratie: December 2004
  • Laatst online: 20-09 12:29
mjax schreef op dinsdag 17 mei 2005 @ 08:09:
[...]


I.p.v. (.+) doe je (.*)

Overigens gaat je constructie niet werken met nested blocks. Heb je daaraan gedacht of is ondersteuning voor nested blocks niet nodig? Mocht je hiermee aan de slag willen gaan dan raad ik je aan naar een stack-based parser over te stappen voor het parsen van je templates.
Bedankt dit werkt ook weer :)

Tja, misschien een dom vraagje, maar wat zijn nested blocks?
En wat is een stack-bases parser?

[ Voor 4% gewijzigd door S_tef op 17-05-2005 16:49 ]


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

[block]
Dit is een gewoon blok
[block]
dit is een genest blok
[/block]
[/block]

In jou regexp voorbeeld zal de eerste open tag met de eerste sluittag worden gematched terwijl de 2e erbij hoort.

En verder : [google="stackbased parser"]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • S_tef
  • Registratie: December 2004
  • Laatst online: 20-09 12:29
Aa netzoiets als dubbele quotes, maar ik heb dit (nog) niet nodig :)

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

S_tef schreef op dinsdag 17 mei 2005 @ 17:22:
Aa netzoiets als dubbele quotes, maar ik heb dit (nog) niet nodig :)
Net zoiets als dubbele quotes? Leg die eens uit? :?

Verder, voor een template kun je best snel zoiets krijgen hoor. Nest maar eens twee loops in elkaar, of een if in een loop. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • S_tef
  • Registratie: December 2004
  • Laatst online: 20-09 12:29
Nouw, op sommige site's, als je 2 quotes in elkaar doet krijg je dit:
**quote***
[...]
blabla
----------------

maargoed, ik zal wel kijken of ik dit nodig heb :)
Pagina: 1