Autor | Zpráva | ||
---|---|---|---|
lopikol Profil |
#1 · Zasláno: 21. 4. 2011, 15:28:07
Zajímalo by mne, proč to v druhém příkladě nefunguje správně.? Jak to upravit, aby právě druhý příklad fungoval jak má? Děkuji.
$auto = 'auto'; $znak = '=='; $moto = 'moto'; if($auto == $moto){ echo 'TRUE<br />'; }else{ echo 'FALSE<br />'; } if($auto . $znak . $moto){ echo 'TRUE<br />'; }else{ echo 'FALSE<br />'; } |
||
zdenek Profil |
#2 · Zasláno: 21. 4. 2011, 15:29:47 · Upravil/a: zdenek
lopikol:
na co potřebuješ, aby to bylo takhle? EDIT: přijde mi to nesmyslné. |
||
Louka Profil |
#3 · Zasláno: 21. 4. 2011, 15:33:46
Druhý případ je totiž nesmysl. Podmínka není text, ale podmínka :)...
Jestli to nutně potřebuješ a myslíš si, že není zbytí, zkus eval(). |
||
lopikol Profil |
#4 · Zasláno: 21. 4. 2011, 15:57:15 · Upravil/a: lopikol
Jde o to, že odděluji html od php a používám nahrazování přes preg_replace_callback();
V šabloně mám: {IF auto == moto}FALSE{/IF} Díky tomu mám z: auto == moto toto: $matches[2] . $matches[3] . $matches[4] Vůbec nevim, jak na toto napasovat eval(); Dokonce si myslim, že tahle funkce mi moc nepomůže. |
||
ShiraNai7 Profil |
#5 · Zasláno: 21. 4. 2011, 16:46:18
lopikol:
Takhle nejak.. a muzes tam timto zpusobem doplnit i ostatni srovnavaci operatory: switch($matches[3]) { // rovnost case '==': $vysledek = ($matches[2] == $matches[4]); break; // vetsi nebo rovno case '>=': $vysledek = ($matches[2] >= $matches[4]); break; // a tak dale.. } if($vysledek) echo 'TRUE'; else echo 'FALSE'; |
||
lopikol Profil |
#6 · Zasláno: 21. 4. 2011, 18:11:40
ShiraNai7:
Díky moc. Jen ještě něco. Dnes si sedim na vedení, ale jakmile to dám do function when($matches){ }, tak to píše Notice: Undefined variable: vysledek. Děkuji moc za radu. |
||
__construct Profil |
#7 · Zasláno: 21. 4. 2011, 18:18:55
lopikol:
Keď si to preložíš - znamená to, že používaš nedefinovanú premennú $vysledek . Stačí ju pred jej použít definovať napr. $vysledek = null;
|
||
lopikol Profil |
#8 · Zasláno: 21. 4. 2011, 18:37:41
__construct:
njn, ale to se pak nic nezobrazí. |
||
ShiraNai7 Profil |
#9 · Zasláno: 21. 4. 2011, 19:19:55
lopikol:
Tak tam mas asi operator co neexistuje... pridej pred konec switche toto: default: throw new InvalidArgumentException(__function__.': Neznamy operator \''.$matches[3].'\'!'); |
||
lopikol Profil |
#10 · Zasláno: 21. 4. 2011, 19:23:30
ShiraNai7:
Díky moc. Měl jsem tam problém v mezeře ;) |
||
lopikol Profil |
#11 · Zasláno: 22. 4. 2011, 07:32:21 · Upravil/a: lopikol
Potřeboval bych ještě poradit s řešením.
Nyní mám možnost mít v šabloně pouze toto: {IF auto == 'moto' }FALSE{/IF} Jak udělat v preg_replace_callback(), aby byla i správnám možnost (vše v jednom a nemusel mít těch funkcní více): {IF auto == "moto" }FALSE{/IF} {IF auto=='moto' }FALSE{/IF} {IF auto=="moto" }FALSE{/IF} Callback: '#({IF )(.*) (.*) \'(.*)\'( })(.*)({/IF})#' |
||
Alphard Profil |
#12 · Zasláno: 22. 4. 2011, 08:22:13
Řešení uvedené v [#5] se mi nezdá pro použití v šabloně dost robustní.
V uvdeném příkladě {IF auto == moto}FALSE{/IF} <?php if (auto == moto): { ?>FALSE<? endif; ?> Šablony se parsují jenom jednou, pak už se bere PHP soubor. |
||
lopikol Profil |
#13 · Zasláno: 22. 4. 2011, 10:17:37
cachování jsem zatim ještě neřešil.
|
||
Alphard Profil |
#14 · Zasláno: 23. 4. 2011, 09:30:03
Řešil bych to jinak, ale tak jste to ještě neřešil :-)
Pro popsaný případ smazat bílé znaky, sjednotit uvozovky a apostrofy, vše před tím regulárem. A doufejte, že nebudete potřebovat {IF auto == 'moto' and kvetina == "ruze"}FALSE{/IF}
|
||
lopikol Profil |
#15 · Zasláno: 23. 4. 2011, 13:04:30
Alphard:
Budu rád, když mi budeš tykat. Beztak jsem mladší než ty. Když se podělíš o tvůj způsob, nápad řešení, tak budu rád :) Tak takovýto zápis nebude potřeba + se z toho dají udělat dva ;) |
||
panther Profil |
#16 · Zasláno: 23. 4. 2011, 18:33:47
lopikol:
„se z toho dají udělat dva“ to mi nepřijde moudré. Podmínka na splnění dvou minipodmínek je základ jakékoliv syntaxe. Když tak pročítám tohle vlákno a přičtu k tomu tvoje znalosti... Proč nepoužiješ nějaké již hotové řešení, např. Smarty? |
||
lopikol Profil |
#17 · Zasláno: 23. 4. 2011, 18:55:23 · Upravil/a: lopikol
Smarty?? :D To by bylo jako použít tank na mouchu! Nemluvě o tom, že to je hnus.
panther: > „se z toho dají udělat dva“ > to mi nepřijde moudré. Podmínka na splnění dvou minipodmínek je základ jakékoliv syntaxe. V nette to tak funguje ;) PS: Co by si doporučil se doučit? |
||
Časová prodleva: 13 let
|
0