kostenloser Webspace werbefrei: lima-city


html aus string filtern

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    skullsplitter

    skullsplitter hat kostenlosen Webspace.

    Hallo,

    ich versuche derzeit ein kleines Script zu schreiben. Das ganze soll mir aus meiner Variabel $this->inhalt (OOP) den HTML-Code zwischen {loop:$name} und {loop:end} liefern.

    Allerdings klappt das nicht so ganz wirklich.

    Das Problem ist schon mal, dass er nichts findet! Ich dachte mir, man kann das doch mit preg_match_all lösen... aber dem scheint nicht so zu sein?

    Hier mein Code:
    $suche = '/\{loop:'.$name.'}(.*){loop:end\}/';
    		preg_match_all($suche, $this->inhalt, $bloecke);
    		
    		foreach ($bloecke as $block => $wert)
    		{
    			foreach($wert as $key => $elem)
    			{
    				//echo $elem;
    				//$this->mem_loop .= $elem;
    			}
    		}


    Mit diesem Suchstring müsste man doch das ganze herausfiltern können, oder?

    Das ist der Code in meiner HTML Datei.
    <table>
                      {loop:admin}
                        <tr>
                          <td>{admin.pw}</td>
                          <td>{admin.name}</td>
                        </tr>
                      {loop:end}
                    </table>


    Und das will ich als Ergebnis:
    <tr>
                          <td>{admin.pw}</td>
                          <td>{admin.name}</td>
                        </tr>


    Wieso bringt er mir hier kein Ergebnis?

    Ich schreibe das ganze, weil ich eine eigene Templateengine schreibe, die auch Loops verarbeiten kann.

    Wenn ich den HTML-Code so habe, wie ich es im Ergebnis habe, würde ich mittels loop das ganze sooft ersetzen wie ich Datensätze habe (mysql_num_rows()).

    Kann mir da vll jemand weiterhelfen?
    Wäre sehr dankbar!

    Danke!

    Gruß,

    Stefan
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Ich schreibe das ganze, weil ich eine eigene Templateengine schreibe, die auch Loops verarbeiten kann.

    Gegenfrage: Wozu das Rad neu erfinden?
    http://www.smarty.net
  4. Autor dieses Themas

    skullsplitter

    skullsplitter hat kostenlosen Webspace.

    Weil smarty und co lauter Zeugs beinhalten das ich net brauch.

    Wenn ich meine Seite fertig habe siehts dann so aus:

    Meine Seite 50 kb
    Templateengine: 3 Mb

    merkst du was?
    krass ausgedrückt


    Beitrag geändert: 24.9.2008 17:04:49 von skullsplitter
  5. @skullsplitter

    Dein Vergleich ist (auch wenn sehr Krass ausgedrückt) Utpoisch!
    Smarty als Engine nimmt sich nur das was es benötigt, von daher ist es egal ob Smarty mit allen Plugins etc. 3MB, oder nur 250Kb groß ist, das spielt nämlich dabei überhaupt keine Rolle. Außerdem muss es ja nicht Smarty sein, es gibt ein Dutzend anderer Template-Engines die man nutzen kann, und die eine Lib-Größe kleiner als 50kb aufweisen. Und in Zeiten von einem ~Upstream > 50kb/s, mach das den Bock auch nicht mehr fett ;-)

    Schau dich mal hier um:
    http://www.phpclasses.org
    http://www.sourceforge.net


    Gruß
    webwalker
  6. Also, ich hab's nicht ausprobiert, aber zwei Ideen habe ich doch:
    Zum einen bin ich mir nicht sicher, ob die Ausgabeschleife stimmt (sorry, zuletzt habe ich mit Perl gearbeitet, nicht mit PHP): Ist $bloecke wirklich ein Hash ?
    Zweitens: {x} ist eigentlich ein Term in Regulären Ausdrücken, der heißt, daß das Zeichen / die (runden) Klammern davor x-mal vorkommen müssen. Ich habe keine Ahnung, wie der Parser von PHP reagiert, wenn x mal keine Zahl ist, aber ich würde auf alle Fälle versuchen, die geschweiften Klammern zu escapen (je ein Backslash voranstellen).
    $suche = '/#{loop:'.$name.'#}(.*)#{loop:end#}/';

    Ich mußte statt der Backslashes etwas anderes, nämlich # tippen, weil das Forum sie komplett gelöscht hätte.
  7. Autor dieses Themas

    skullsplitter

    skullsplitter hat kostenlosen Webspace.


    @skullsplitter

    Dein Vergleich ist (auch wenn sehr Krass ausgedrückt) Utpoisch!
    Smarty als Engine nimmt sich nur das was es benötigt, von daher ist es egal ob Smarty mit allen Plugins etc. 3MB, oder nur 250Kb groß ist, das spielt nämlich dabei überhaupt keine Rolle. Außerdem muss es ja nicht Smarty sein, es gibt ein Dutzend anderer Template-Engines die man nutzen kann, und die eine Lib-Größe kleiner als 50kb aufweisen. Und in Zeiten von einem ~Upstream > 50kb/s, mach das den Bock auch nicht mehr fett ;-)

    Schau dich mal hier um:
    http://www.phpclasses.org
    http://www.sourceforge.net


    Gruß
    webwalker


    Hmh ich glaube wir zwei verstehen und einfach nicht... - mir geht es zum einen drum, dass ich es selber schreibe. Es ist noch keiner besser geworden, indem er Dinge von anderen übernommen hat. ;)

    Deshalb will ich es ja selberschreiben. :)

    Habe durch ein anderes Forum ebenfalls Hilfestellung bekommen, die Lösung:

    $regex = '!#{loop:([^#}]+)#}(.*)#{loop:end#}!sU';


    # => \

    Damit sucht er mir alle Loops heraus. So ist es mir sogar möglich, mehrere Loops aufeinmal abzuarbeiten. :)

    @dis-order - thx für deine Mühe :)

    Vielen Dank für eure Hilfe!

    Gruß
    skull


    Beitrag geändert: 25.9.2008 15:43:05 von skullsplitter
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!