Autor | Zpráva | ||
---|---|---|---|
tomaspo Profil * |
#1 · Zasláno: 29. 12. 2014, 20:54:09
Hezký den,
z MYSQL vypisuji data echo $radek[něco]; Potřeboval bych vyřešit, aby když se v $radek[něco] narazí na tag <include>nejakysoubor.php</include> , tak aby se echo přerušilo, naincludoval se soubor a pak se pokračovalo v echu.
Jde to nějak jednoduše? Stačí mě nasměrovat. Děkuji. |
||
Alphard Profil |
#2 · Zasláno: 29. 12. 2014, 21:04:39
Co v tom nejakysoubor.php je? I když parser, který splní požadavek, jde napsat na pár řádků, bylo by dobré najít řešení bez includování php souborů.
|
||
tomaspo Profil * |
#3 · Zasláno: 29. 12. 2014, 21:17:27 · Upravil/a: tomaspo
Slovy:
Dělám profily různých kulturních zařízení - míst, kde se pořádají kulturní akce. Součástí každého profilu má být i seznam kulturních akcí, které se v tomto zařízení pořádají. Ta data o akcích se berou úplně z jiné databáze. Já ten seznam kulturních akcí prostě potřebuju vložit do výpisu těla článku $radek[něco] (profilu organizace), přičemž u každého článku na jiné místo.
Potřebuju, aby to mohl dělat ten, kdo obsluhuje redakční systém. Nemusí to být vůbec přes include. Může to být např. že vloží tag [poradatel]22[/poradatel]. Jde mi o to, jak přerušit to ECHO, vložit vlastní skript v případě nalezení tagu, a pak pokračovat.... [poradatel]22[/poradatel] = přerušení ECHO, spuštění skriptu s načtením organizace id 22 a pokračování ECHO
|
||
Chro_ Profil * |
#4 · Zasláno: 29. 12. 2014, 21:33:51
$neco = $radek['neco']; if (substr($neco, 0, 9) === '<include>' && substr($neco, -10) === '</include>') { include trim(str_replace(array('<include>', '</include>'), '', $neco)); } else { echo $neco; } |
||
Alphard Profil |
#5 · Zasláno: 29. 12. 2014, 21:42:48
$widgetRepository = [ 'time' => function() { return date('H:i:s'); }, 'date' => function() { return date('d.m.Y'); }, ]; # priklad s use je tady proto, abyste se dostal k databazi nebo celkove do systemu bez globalnich promennych $widgetReplace = function($widget) use ($widgetRepository) { return $widgetRepository[$widget[1]](); }; $in = 'Nejaky uzivatelsky retezec, do ktereho chceme doplnit widget: [widget]time[/widget], [widget]date[/widget]'; $result = preg_replace_callback('~\[widget\](.*?)\[\/widget\]~iu', $widgetReplace, $in); echo $result; |
||
tomaspo Profil * |
#6 · Zasláno: 29. 12. 2014, 21:45:58
Chro:
Díky, ale toto mi vypsalo <include>karel.php</include> |
||
Chro_ Profil * |
#7 · Zasláno: 29. 12. 2014, 22:02:06
Protože jsem to špatně pochopil a ty tagy jsou určitě součástí širšího textu v $radek[neco], ne jen ony a mezi nima název souboru. Drž se řešení od Alpharda, ten to vyhmátl.
|
||
tomaspo Profil * |
#8 · Zasláno: 29. 12. 2014, 22:09:04
Alphard:
Super, díky moc. Tady ten Váš kód nevypíše nic. Ale najdu chybu a použiju, už asi vím jak na to, děkuji |
||
Alphard Profil |
#9 · Zasláno: 29. 12. 2014, 22:16:25
tomaspo:
„Tady ten Váš kód nevypíše nic.“ Já si to zkoušel, vypíše. Nejaky uzivatelsky retezec, do ktereho chceme doplnit widget: 22:14:55, 29.12.2014 |
||
tomaspo Profil * |
#10 · Zasláno: 29. 12. 2014, 22:50:07
Alphard:
PHP Version 5.2.17 a chybu to nehází :-( |
||
Alphard Profil |
#11 · Zasláno: 29. 12. 2014, 23:06:21
tomaspo:
„PHP Version 5.2.17 a chybu to nehází :-(“ A něco jiného vám chybu hází? Tohle by totiž mělo skončit chybou, anonymní funkce tak jak je používám byly přidány až v 5.3. Verze 5.2 z roku 2006 je už dlouho stará a nepodporovaná. Je mi jasné, že změna hostingu není vždy snadná, ale zůstávat u této verze nelze doporučit. Takže bohužel, ale pořád můžete callback u funkce preg_replace_callback() dle příkladu v manuálu přepsat tak, aby fungoval i na starší verzi. Tady už se použití global pro přístup mimo funkci asi nevyhnete, ale pořád můžete přímo includovat nějaký soubor. |
||
Časová prodleva: 9 let
|
0