Ergebnis 1 bis 8 von 8

Thema: [PHP] Interpretation von eigenem Code im Template.

  1. #1
    Shogun Avatar von DarkSyranus
    Registriert seit
    28.03.2006
    Ort
    ::1/128
    Alter
    25
    Beiträge
    3.446
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard [PHP] Interpretation von eigenem Code im Template.

    So, ich wollte mal um in PHP nicht einzurosten eine kleine Template-Engine schreiben.
    Nun habe ich jedoch folgendes Problem.
    Die Syntax sieht folgendermaßen aus.

    Code:
    /**
    	* Template-Code:
    	*
    	* Simple If-Clause:
    	* 	 Code 
    	*	
    	* Extendet If-Clause:
    	* 	 Code 
    	* 	 Code 
    	*
    	* If-Clause with brackets:
    	* 	 Code 
    	* 	 Code 
    	*
    	* Else-If-Clause:
    	* 	 Code  Code 
    	*
    	* Else-Clause:
    	* 	 Code  Code 
    	*/
    Im Template eingebaut erhalten wir folgendes.
    Code:
     Test ist da. 
    
    		 Test und Test2 sind da. 
    
    		 Test oder test 2 sind da. 
    
    		 Test und Test2 oder Test3 und Test4 sind da.  
    
    		 Gaga ist da.  Gugu ist da.  Gaga und Gugu sind nicht da ;-(
    Nun stelle ich mir jedoch die Frage, wie ich das interpretieren soll.
    Bisher bin ich soweit, dass ich die Codes z.B. wie folgt habe.
    array(3) {
    [0]=>
    string(16) ""
    [1]=>
    string(2) "IF"
    [2]=>
    string(5) " Test"
    }
    Es dreht sich also nur darum [2] entsprechend auszuwerten.
    Bei solch einem einfachen Code ist das kein Problem, aber gehen wir einmal davon aus wir hätten folgendes.
    (Ausdruck AND Ausdruck2) OR (Ausdruck3 AND Ausdruck4)
    Wie macht es eurer Meinung nach am meisten Sinn das auszuwerten ??
    Ich meine jetzt, wie würdet ihr vorgehen?
    Zuerst alle Ausdrücke raussuchen und überprüfen und dann erst die Reihe abtasten?
    Das ganze Ausdruck für Ausdruck durchkämmen?
    ... ?

    Noch kurz zur Info: Ausdruck soll ein einfache Schlüssel sein, wenn er in einem Array existiert ist es true, sonst false.
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    gelöschter User
    Gast

    Standard

    ich denk mal du machst dir jetzt en array wie z.B. der hier:

    Code:
    <?php
    $test = array&#40;"blub","","blub2","blub3","blub4","blub5"&#41;;
    ?>
    [0] Test
    [1] Test2
    [2] Test3
    [3] Test4
    [4] Gaga
    [5] Gugu

    und dann wendest du IF Abfragen auf den Array an?!
    (vll hab ich auch das ganze einfach nicht gerafft aber ich hätts jetzt so gemacht)

    Gruß crAzywuLf

  3. #3
    Kaiserliche Hoheit Avatar von No0ob
    Registriert seit
    02.01.2006
    Ort
    Nähe Frankfurt
    Beiträge
    1.500
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Nun, generell solltest du die Struktur der If-Abfragen aufbauen und eventuell mittels eval interpretieren

  4. #4
    Shogun
    Themenstarter
    Avatar von DarkSyranus
    Registriert seit
    28.03.2006
    Ort
    ::1/128
    Alter
    25
    Beiträge
    3.446
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard

    Ja, crAzywuLf, du hast mich verstanden =)
    Soweit bin ich auch schon, aber wie interpretiere ich die Anfragen?
    Ich hab bisher noch keine logische Idee, wie ich mit Klammern verschachtelte Abfragen lösen kann und eval() wollte ich eigentlich nicht benutzen ...

  5. #5
    gelöschter User
    Gast

    Standard

    Zitat Zitat von DarkSyranus
    Ja, crAzywuLf, du hast mich verstanden =)
    Soweit bin ich auch schon, aber wie interpretiere ich die Anfragen?
    Ich hab bisher noch keine logische Idee, wie ich mit Klammern verschachtelte Abfragen lösen kann und eval() wollte ich eigentlich nicht benutzen ...
    komm mann, stell dich doch ned so dumm^^
    du du hast den aufbau doch oben schon gut aufgeschrieben jetzt nur noch in php ^^
    das wirste wohl schaffen
    ich kann dir die lösung ja auch ned einfach jetzt hier hinschreiben ne?^^

  6. #6
    Shogun
    Themenstarter
    Avatar von DarkSyranus
    Registriert seit
    28.03.2006
    Ort
    ::1/128
    Alter
    25
    Beiträge
    3.446
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard

    Doch, ich steh grad irgendwie auf'm Schlauch =)
    Ich such mir alle Abfragen da raus über preg_match_all() oder so und dann lass ich sie prüfen, ob sie in dem Array existieren.
    Das ist ja auch kein Problem, kleine Abfrage machen und wenn irgendwie false vorkommt ist die Bedingung falsch.
    Aber nun kommt mir diese Klammernstellung dazwischen.

    Ich muss ja irgendwie berücksichtigen, dass wenn man z.B. (Ausdurck1 OR Ausdruck2) hat, dass dann nur eines von beiden true sein muss.
    Und dass ist ja nur eine einfache Verschachtelung, es gibt ja auch Sachen wie (Ausdruck1 AND ((Ausdruck2 OR (Ausdruck3 AND Ausdruck4)) AND Ausdruck5)).
    Mir fällt kein logisches Muster ein, wie man die interpretiert, die Umsetzung nachher ist kein Problem ...

  7. #7
    der/die Göttliche Avatar von jojo87
    Registriert seit
    23.03.2007
    Ort
    Leipzig
    Alter
    30
    Beiträge
    3.131
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Das hier sollte dich auf die richtige Spur bringen.....

  8. #8
    Shogun
    Themenstarter
    Avatar von DarkSyranus
    Registriert seit
    28.03.2006
    Ort
    ::1/128
    Alter
    25
    Beiträge
    3.446
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard

    Hm, ich glaube ich brauch erstmal das hier ...
    Also, ich versuche es nochmal zu erklären.

    Ich bin im Moment auf der Suche nach einer möglichst optimalen Möglichkeit eine möglichst hoch verschachtelte Bedingung nach einem gewissen Muster möglichst immer gleich interpretieren zu können, und das egal wie krank das ganze verschachtelt ist.

    Edit:
    Juhu, es geht jetzt.
    Braucht ein wenig mehr Rechenleistung, aber das ist mir so ziemlich egal =)
    Wen es interessiert:
    Code:
    private function ParseIfClause&#40;$ifClause&#41;
    		&#123;
    			$ifClause = '&#40;'.trim&#40;$ifClause&#41;.'&#41;';
    
    			// Find all conditions.
    			$count = preg_match_all&#40;'#&#40;&#91;a-zA-Z0-9\!&#93;+&#41;#', $ifClause, $matches&#41;;
    
    			// Check every condition.
    			foreach&#40;$matches&#91;0&#93; as $match&#41;
    			&#123;
    				// The condition is a negative on like !example.
    				if&#40;$match&#91;0&#93; == '!'&#41;
            &#123;
            	$ifClause = preg_replace&#40;'#&#40;\&#40;| &#41;'.$match.'&#40; |\&#41;&#41;#', '$1'.&#40;&#40;isset&#40;$this->ifClauseConditions&#91;substr&#40;$match, 1&#41;&#93;&#41;&#41; ? 'false' &#58; 'true'&#41;.'$2', $ifClause&#41;;
    				&#125;
    				else
    				&#123;				
    					$ifClause = preg_replace&#40;'#&#40;\&#40;| &#41;'.$match.'&#40; |\&#41;&#41;#', '$1'.&#40;&#40;isset&#40;$this->ifClauseConditions&#91;$match&#93;&#41;&#41; ? 'true' &#58; 'false'&#41;.'$2', $ifClause&#41;;
    				&#125;
    			&#125;
    
    			// Match all conditions and simplify the condition.
    			while&#40;preg_match_all&#40;'#\&#40;&#40;&#91;a-z\&\| &#93;+&#41;\&#41;#', $ifClause, $matches, PREG_SET_ORDER&#41; !== 0&#41;
    			&#123;
    				// Check every statement.
          	foreach&#40;$matches as $match&#41;
    				&#123;
    					$preparse = $match&#91;0&#93;;
            	$postparse = substr&#40;$preparse, 1, -1&#41;;
    
    					$postparse = preg_replace&#40;'#&#40;true \&\& true&#41;#', 'true', $postparse&#41;;
    					$postparse = preg_replace&#40;'#&#40;&#40;true|false&#41; && &#40;true|false&#41;&#41;#', 'false', $postparse&#41;;
    
    					$postparse = preg_replace&#40;'#&#40;false \|\| false&#41;#', 'false', $postparse&#41;;
    					$postparse = preg_replace&#40;'#&#40;&#40;true|false&#41; \|\| &#40;true|false&#41;&#41;#', 'true', $postparse&#41;;
    
    					$ifClause = str_replace&#40;$preparse, $postparse, $ifClause&#41;;
    				&#125;
    			&#125;
    
         	var_dump&#40;$ifClause&#41;;
    
    			return true;
    		&#125;

Ähnliche Themen

  1. Mac - Code Interpretation?
    Von xXx_BaSStar_xXx im Forum Computer - Internet Forum
    Antworten: 2
    Letzter Beitrag: 05.11.2007, 21:42
  2. Spiele mit eigenem Highscore auf die HP?!
    Von pyroforjc im Forum HTML & CSS Forum
    Antworten: 1
    Letzter Beitrag: 18.02.2007, 19:58
  3. typo3 in verbindung mit eigenem php script
    Von iskdjim im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 3
    Letzter Beitrag: 06.10.2006, 18:00
  4. bei eigenem Content nach eigenem Wert suchen/sortieren
    Von mgraf im Forum Zope & Plone - das deutsche Hilfeforum
    Antworten: 5
    Letzter Beitrag: 20.09.2006, 14:30
  5. webtemplate mit eigenem banner?
    Von tc4racer im Forum HTML & CSS Forum
    Antworten: 3
    Letzter Beitrag: 19.07.2005, 16:39

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •