Autor | Zpráva | ||
---|---|---|---|
Sylar Profil |
#1 · Zasláno: 1. 7. 2009, 16:29:58 · Upravil/a: Sylar
zdravím,
mám v DB uložený nějaký text např. testovací kód mojí stránky [include=soubor] další testovací text mojí stránky potřebuji takový regulár který mi z textu [include=soubor] udělá soubor a ten pak změnit na <?php include_once "soubor.php"; ?> budu includovat do stránky samotné. S tímto typem regulárů si ještě moc nerozumím ... mohl by mi někdo píchnout ? díky moc |
||
Majkl578 Profil |
#2 · Zasláno: 1. 7. 2009, 16:42:58 · Upravil/a: Majkl578
$input = <<< 'DBTEXT' qwsdefrg elrqstauwerk [include=./dir/file.ext] efgrmhnyo mferig DBTEXT; var_dump(preg_replace('~\[include=(.[^\]]+)\]~', '<?php include_once \'$1\'; ?>', $input)); |
||
Sylar Profil |
#3 · Zasláno: 1. 7. 2009, 16:54:56
Majkl578
okey tj super .. díky moc ... a ještě bych potřeboval poradits tím jak to ./dir/file.ext "vyndat" z toho celkovýho textu do nějakýho pole, protože já ten název ještě musím před includem zkontrolovat v DB, jestli je povolen, aby si každý neincludoval co chce |
||
Majkl578 Profil |
#4 · Zasláno: 1. 7. 2009, 17:03:57 · Upravil/a: Majkl578
Sylar
tak tedy preg_replace_callback $input = <<< 'DBTEXT' qwsdefrg elrqstauwerk [include=./dir/file.ext] efgrmhnyo mferig DBTEXT; var_dump(preg_replace_callback('~\[include=(.[^\]]+)\]~', function($match) { $file =& $match[1]; //tady si overis, zda muze nebo nemuze //$checkQ = mysql_query(... WHERE filename = $file);//overovaci dotaz //if(!mysql_num_rows($checkQ)) {//pokud nebylo v db nalezeno, vymaze se inkriminovany include //return ''; //} return '<?php include_once \'' . $file . '\'; ? >'; }, $input)); pokud pouzivas starsi verzi php nez 5.3, nahrad si anonymni funkci za create_function |
||
Sylar Profil |
#5 · Zasláno: 1. 7. 2009, 18:21:10
var_dump(preg_replace_callback('~\[include=(.[^\]]+)\]~', create_function($match) { $file =& $match[1]; $check = mysql_query("SELECT count(id) FROM e_modules WHERE link = '".$file."' AND zobraz = '1'") or die (error()); if (mysql_result($check, 0) != 1) return ""; return "<?php include_once \"./pages/".$file."\".php\"; ? >"; }, $p['obsah'])); takhle jsem si to upravil ale phpko mi hlásí syntax chybku hned na tom pvním řádku ... nelíbí se mu tam ta { ... koukal jsem i do manuálu ... tam mají ( , tu jsem tam taky zkoušel dát ale hlásí toto samý ... |
||
Majkl578 Profil |
#6 · Zasláno: 1. 7. 2009, 18:50:10 · Upravil/a: Majkl578
zkus to takto:
$input = <<< 'DBTEXT' qwsdefrg elrqstauwerk [include=./dir/file.ext] efgrmhnyo mferig DBTEXT; var_dump(preg_replace_callback('~\[include=(.[^\]]+)\]~', create_function('$match', ' $file =& $match[1]; //tady si overis, zda muze nebo nemuze $check = mysql_query("SELECT count(id) FROM e_modules WHERE link = \'".mysql_real_escape_string($file)."\' AND zobraz = 1") or die (mysql_error()); if (mysql_result($check, 0) != 1) { return ""; } return \'<?php include_once \\\'./pages/\' . $file . \'.php\\\'; ? >\';'), $p['obsah'])); |
||
Sylar Profil |
#7 · Zasláno: 1. 7. 2009, 19:15:02 · Upravil/a: Sylar
jj tedka už je to OK žádnou chybku to nehází ale zase to ještě neprovede ten include :( ... vyhodí mi to zpátky text a na místo [include=soubor] je tam <?php include_once './pages/soubor.php'; ?> ale je to ve zdrojáku růžovou kurzívou ...
var_dump jsem dal pryč a výstup z preg_replace_callback echuju, ale pak mi to právě jen vypíše ale neprovede ten include :( ... ten soubor tam ale je ... |
||
Majkl578 Profil |
#8 · Zasláno: 1. 7. 2009, 21:20:37
v prvnim prispevku jsi uvedl, ze chces <?php include_once "soubor.php"; ?>, tak jsem to tak udelal.
zkus tedy toto: $input = <<< 'DBTEXT' qwsdefrg elrqstauwerk [include=./_x] efgrmhnyo mferig DBTEXT; $input = preg_split('~(\[include=.[^\]]+\])~', $input, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY); foreach($input as $data) { if(preg_match('~^\[include=(.[^\]])+\]$~', $data, $match)) { $check = mysql_query("SELECT count(id) FROM e_modules WHERE link = \'".mysql_real_escape_string($file)."\' AND zobraz = 1") or die (mysql_error()); if (mysql_result($check, 0) != 1) { continue; } @include './pages/' . $match[1] . '.php'; continue; } echo $data; } |
||
Sylar Profil |
#9 · Zasláno: 2. 7. 2009, 17:20:46
ok tedka to už funguje includuje stránku se zápisem [include=kontakt_form] ale tu se zápisem [include=ref_vypis] to includnout nechce ... hodil jsem stránku na http://beta.inbo.cz jsou to stránky http://beta.inbo.cz/kontakt/ a http://beta.inbo.cz/reference/ . Na kontakt je includovaný ten formulář ale na reference je pořád zápis [include=ref_vypis] ... je to úplně to samý, nechápu proč to reference nebere ... jak kontakt_form.php tak ref_vypis.php jsou ve složce /pages/, v tomhle chyba není ...
|
||
Sylar Profil |
#10 · Zasláno: 2. 7. 2009, 21:30:28
Okey už to jde :-))) díky moc, snad jsi o moc nezestárl :-)
|
||
Časová prodleva: 3 dny
|
|||
Majkl578 Profil |
#11 · Zasláno: 5. 7. 2009, 19:18:06
Sylar
jen o par minut, ale zase jsem ziskal nove zkusenosti ;) |
||
Časová prodleva: 15 let
|
0