Autor | Zpráva | ||
---|---|---|---|
nym Profil * |
#1 · Zasláno: 14. 1. 2010, 19:09:52
Čuste. Mám takový problém. Stavím vlastní šablonovací systém, a potřeboval bych uvnitř jednoho dokumentu nahradit {obsah} za obsah souboru main_page.php tak, aby se obsah souboru provedl. Takze readfile neprichazi v uvahu. Mozna na to jdu jen spatne ze stranky filosofie, ale nějak mi to nejde. Díky za pomoc.
|
||
Majkl578 Profil |
#2 · Zasláno: 14. 1. 2010, 19:23:15
Aby se provedl jak, hned?
Na to by mohlo stačit include. |
||
nym Profil * |
#3 · Zasláno: 14. 1. 2010, 19:35:17
Majkl578:
Právě že include nestačí. Zkoušel jsem něco na způsob: $var= include("main_page.php"); $tmp_source = str_Replace("{obsah}", $var, $tmp_source); ale k ničemu to nevedlo. Potřebuji prostě místo toho spešl znaku vložit ten soubor. |
||
martindeveloper Profil |
#4 · Zasláno: 14. 1. 2010, 19:38:02 · Upravil/a: martindeveloper
nym:
ob_start(); include ("main_page.php"); $buffer = ob_get_contents(); ob_end_clean(); $tmp_source = str_Replace("{obsah}", $buffer, $tmp_source); |
||
Majkl578 Profil |
#5 · Zasláno: 14. 1. 2010, 19:41:55 · Upravil/a: Majkl578
A nestačí z jakého důvodu? Předpokládám, že to je kvůli okamžitému vypsání.
To by šlo řešit několika způsoby. 1. Bufferování. $string = 'foo{obsah}bar'; //pokud je {obsah} použité alespoň jednou if (strpos($string, '{obsah}') !== false) { ob_start(); include '/tmp/foo.php'; $buffer = ob_get_contents(); ob_clean(); $string = str_replace('{obsah}', $buffer, $string); } echo $string; 2. Rozdělení řetězce do pole a při iteraci echo použít include. Edit: Ha, byl jsem pomalejší, nevadí... :) |
||
nym Profil * |
#6 · Zasláno: 14. 1. 2010, 19:56:58
martindeveloper, Majkl578
Ano, nejspíš to bude ono. Jen by mě ještě tak okrajově zajímalo, jestli neexistuje nějaká funkce, která to načte prostě do proměnné a bude to možné zpracovat - i když vlastně asi ne, už melu nesmysly, když se to vlastně ukládá jako string... |
||
martindeveloper Profil |
#7 · Zasláno: 14. 1. 2010, 20:18:47
function getBuffer($file) { ob_start(); include( $file) ; $buffer = ob_get_contents(); ob_end_clean(); return $buffer; } $string = str_replace('{obsah}', getBuffer('main_page.php'), $string); |
||
keeehi Profil |
#8 · Zasláno: 14. 1. 2010, 20:27:59
Máš asi na mysli eval?
|
||
nym Profil * |
#9 · Zasláno: 14. 1. 2010, 20:29:58
martindeveloper:
Díky. Když už jsem u toho s funkcema ob_* - jak je tahle funkce rozšířená? Funguje to všude? Funguje to více než file_get_contents (vím, že pomocí této těch ob_* se to dá nahradit)? keeehi: Mrknu na to. |
||
mckay Profil |
#10 · Zasláno: 14. 1. 2010, 21:07:03
nym:
Ano, snad fungují všude. |
||
Časová prodleva: 13 let
|
0