Autor | Zpráva | ||
---|---|---|---|
zvěřiňák Profil |
#1 · Zasláno: 14. 5. 2010, 22:48:07
Potřeboval bych poradit, jak tohle vyřešit trochu elegantněji.
$zaznam["vzkaz"] = str_replace("*01*", "<img src='images/01.gif' alt='smajlik'>", $zaznam["vzkaz"]); To samozřejmě funguje, ale těch smajlíků je 50. Psát to 50x se mi nechce, ale nevím, jak to udělat jinak. |
||
__construct Profil |
#2 · Zasláno: 14. 5. 2010, 23:51:45 · Upravil/a: __construct
<?php $zaznam["vzkaz"] = "Lorem *49* ipsum *7* dolor sit amet"; $regexp = '/\*(\d+)\*/'; $nahrada = "<img src='images/$1.gif' alt='smajlik'>"; echo preg_replace($regexp, $nahrada, $zaznam["vzkaz"]); ?> |
||
zvěřiňák Profil |
#3 · Zasláno: 15. 5. 2010, 00:21:40
__construct:
Díky. Funguje to perfektně. |
||
BuGeR Profil |
#4 · Zasláno: 15. 5. 2010, 10:42:13
A nešlo by to takto?:)
for($c=1;$c<=50;$c++) { if($c<10) { $c = "0".$c; } $zaznam["vzkaz"] = str_replace("*".$c."*", "<img src='images/".$c.".gif' alt='smajlik'>", $zaznam["vzkaz"]); } |
||
Nox Profil |
#5 · Zasláno: 15. 5. 2010, 10:53:49 · Upravil/a: Nox
Asi jo, ale je to krkolomný, neelegantní a nejspíš i pomalejší.... __constructův je sice regexpem, ale zas se to projde jednou, tvým kódem se text projde 50x, ikdyž nejspíš rychlejší funkcí
|
||
Leopik 2x Profil |
#6 · Zasláno: 15. 5. 2010, 12:11:54 · Upravil/a: Leopik 2x
__construct:
A ak budem písať text a napíšem *slovo* tak to nahradí aj to a to asi nie je žiadané. |
||
Yur4Y Profil |
#7 · Zasláno: 15. 5. 2010, 12:25:22
Leopik 2x:
Určite? Má tam predsa \d. |
||
Leopik 2x Profil |
#8 · Zasláno: 15. 5. 2010, 12:36:46
To máš pravdu, ale keď to bude *9999* tak to vráti images/9999.gif
|
||
BuGeR Profil |
#9 · Zasláno: 15. 5. 2010, 13:13:01
Tak tam zkus hodit podmínku, že pokud to číslo je buď větší a nebo se rovná 1 a menší nebo se rovná 50;)
|
||
zvěřiňák Profil |
#10 · Zasláno: 15. 5. 2010, 13:13:54
No, já tam ty smajlíky vkládám takhle:
<img onclick="policko.value+=' *01* '; pocitani()" alt="01" title="01" src="images/01.gif"> A na jejich zobrazování jsem měl krkolomnej js, takže jsem původně chtěl vymyslet zobrazování cyklem for, jako napsal BuGeR. Ale ten způsob, který vymyslel __construct je opravdu elegantnější a ještě včera jsem ho dal na web a funguje dobře. |
||
Majkl578 Profil |
#11 · Zasláno: 15. 5. 2010, 13:36:28
Leopik 2x, BuGeR:
Co tenhle regulár? ~\*([1-9]|[1-4]\d|50)\*~
|
||
__construct Profil |
#12 · Zasláno: 16. 5. 2010, 22:38:32 · Upravil/a: __construct
Leopik 2x:
„To máš pravdu, ale keď to bude *9999* tak to vráti images/9999.gif“ áno a to ako vadí ?? Neviem prečo riešiš takú nepodstatnú vec. Čo keď sa časom rozhodne pridať 10 ďalších smajlov ? BuGeR: „Tak tam zkus hodit podmínku, že pokud to číslo je buď větší a nebo se rovná 1 a menší nebo se rovná 50;)“ Kontrolovať to podmienkou je zbytočné zdržiavanie - ten regexp čo napísal Majkl578 by bolo najelegantnejšie riešenie - ale nevšimol si toho, že obrázky sú číslované *01* - takže \*([1-9]|[0-4]\d|50)\* |
||
Časová prodleva: 14 let
|
0