Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » PHP & MySQL » Array Index auswerten? Antworten
Array Index auswerten?

Lumo
Pixelschubser


Beiträge: 14


Ich habe folgendes:

1: 
2: 
3: 
4: 
5: 
6:
$tmpl_content[title] = 'echo "blabla";
$gaga = 123 + 123;
echo $gaga;';
$tmpl_content[text] = 'echo "Hallo Welt";
$baba = 999 * 999;
echo $baba;';


Jetzt möchte ich das $tmpl_content Array in eine Funktion übergeben.
Dort möchte ich den Index von $tmpl_content zählen.
In dem oberen falle wären das 2 (title & text).

Meine Frage jetzt. Wie lese ich aus wie groß der Index von $tmpl_content ist?

Als nächstes würde ich dann eine Schleife machen die nur maximal so oft läut wie die größe des Indexes ist.

Darin möchte ich per str_replace('','',''); die $title durch $tmpl_content[title] ersetzen. Nur weiß ich leider auch nicht wie ich das anstellen soll ^^.

Wenn mir noch einer erklären könnte wie ich die Index in $tmpl_content nicht nummerisch sondern alphanumerisch ([title]) so wie ich sie definiert habe auslesen kann könnte ich mein Vorhaben in die Tat umsetzen.

  Profil   E-Mail   Editieren   Zitieren

sDiver
Pixelschubser


Beiträge: 13


hi lumo,
denke mal du willst in einem text deine Variablen ersetzen.
habe hierzu eine Funktion der du deinen Text übergibst ($source)
und das Array mit deinen Werten ($vars)

mit dem Code müssen die Stellen im Text mit %%variablenname%% gekennzeichnent
werden. ansonsten einfach die beiden stellen mit %% rausnehmen

sDiver

1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10:
function my_ReplaceVariables( $source, $vars ) {
	if ( trim($source) <> "" ) {
		$work = $source;
		while ( list( $key, $val ) = each( $vars ) ) { 
			$x = "%%" . strtolower($key) . "%%";
			$work = str_replace( $x, $val, $work );
		}
		return $work;
	}
}

  Profil   Editieren   Zitieren

Lumo
Pixelschubser


Beiträge: 14


Ich möchte Platzhalter in Templates ersetzen.
Habe mir das ungefähr so gedacht:

class_template.php
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14:
<? 
function template ($dir, $tmpl_name, $tmpl_content) {
  global $tmpl;
      $pfad = "".$dir."\\".$value_name."";
      $fp = fopen($pfad, "r");
      $tmpl = fread($fp, filesize($pfad));
      fclose($fp);
      $tmpl = str_replace('{', '<?', $tmpl);
      $tmpl = str_replace('}', '?>', $tmpl);
      //Hier der Teil wo die schleife rein soll
      return $tmpl;
    }
}
?>


In meiner index.php kommen dann beliebig viele Programmteile die als $tmpl_content[irgendwass] deklariert werden.
Bsp:
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11:
<?
$dir = 'c:\\intranet\\Apache2\\htdocs\\test\\templates';
$tmpl_name = 'index.tpl';
$tmpl_content[title] = 'echo "blabla";
$gaga = 123 + 123;
echo $gaga;';
$tmpl_content[text] = 'echo "Hallo Welt";
$baba = 999 * 999;
echo $baba;';
require_once('./templates/class_template.php');
?>


Jetzt muss ich nur noch in den Templates die Platzhalter nach dem Name der Programmfunktion einfügen:
1: 
2: 
3: 
4: 
5: 
6: 
7:
<html>
<head>
<title>{$title}</title>
</head>
<body><center>{$text}</center>
</body>
</html>


Um die Platzhalter zu ersetzen ist die Schleife notwendig.
Vor der Schleife muss ermittelt werden wie groß der Index ist.
Dann bestimmt die größe des Indexes wie offt die Schleife wiederhohlt werden soll um alle Platzhalter zu ersetzen.

Da der Index den gleichen Name wie die Platzhalter trägt muss lediglich nur noch der name des jeweiligen Indexes ausgelsen werden und als str_replace('indexname', $inhalt vom jeweiligen index, $templ);.

Der Vorteil ist das ich in meiner index.php so viele Programmteile in das Array eintragen kann wie ich will.

Nur weiß ich nicht wie ich die Schleife definiere

  Profil   E-Mail   Editieren   Zitieren

sDiver
Pixelschubser


Beiträge: 13


hi lumo,

die Lösung findest Du in meinem vorherigen Post !

Einfach das Template in einen String einlesen

1: 
2: 
3:
$fp = fopen("/home/irgendwas/gaga.tmpl");
$filestring = fgets($fp, filesize(datei));
fclose($fp);


Dann die Funktion aufrufen

1: 
2: 
3:
$neuerstring = my_ReplaceVariables ( $filestring, $tmpl_content);
echo $gaga;
echo $neuerstring;


Die Funtion rödelt dann das ganze Array durch und ersetzt alle Variablen

musst halt nur im Template
<title>%%title%%</title> angeben oder den Befehl in der Funktion ändern!

sDiver

PS:
oder schau dir mal FastTemplatean


Diese Nachricht wurde geändert von: sDiver
  Profil   Editieren   Zitieren

skc.tiddy
Otto-Normal-Poster


Beiträge: 81


zum einlesen von inhalt am besten: file_get_contents(); verwenden...

ist viel edler...
es sein denn, du hast eine mördermässig riesige datei ;)

---
...blah.

Diese Nachricht wurde geändert von: skc.tiddy
  Profil   Website   Editieren   Zitieren

languitar
Foren-Team


Beiträge: 2795


smarty ist sonst auch sehr bekannt.

---
Take a look here!
Lichtblick - Einblick - Ausblick

  Profil   E-Mail   Website   Editieren   Zitieren

Lumo
Pixelschubser


Beiträge: 14


Ich danke euch Leute funzt ;)

So sieht es jetzt aus bei mir:
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17:
<? 
function template ($dir, $tmpl_name, $tmpl_content) {
  global $work;
      $pfad = "".$dir."\\".$tmpl_name."";
      $fp = fopen($pfad, "r");
      $tmpl = file_get_contents($pfad);
      fclose($fp);
      if ( trim($tmpl) <> "" ) {
        $work = $tmpl;
        while ( list( $key, $val ) = each( $tmpl_content ) ) { 
			    $x = "%%" . strtolower($key) . "%%";
			    $work = str_replace( $x, $val, $work );
          }
		  }
		return $work;
}
?>


Von fertigen Templateklassen hab ich von Anfang an abgesehen, weil die meist zu aufgeplustert sind.

THX nochmal an alle

  Profil   E-Mail   Editieren   Zitieren

languitar
Foren-Team


Beiträge: 2795


Zeilen 5 und 7 kannste dir so sparen.

---
Take a look here!
Lichtblick - Einblick - Ausblick

  Profil   E-Mail   Website   Editieren   Zitieren

Lumo
Pixelschubser


Beiträge: 14


Aso ja stimmt ja
Wäre mir jetzt garnicht aufgefallen.

  Profil   E-Mail   Editieren   Zitieren
 

Antworten
Nach oben