Autor | Zpráva | ||
---|---|---|---|
GamerX Profil |
#1 · Zasláno: 9. 9. 2014, 11:11:10
Ahoj dělam si mini-chat nyní si tam přídávám smajlíky ale mam jich 159 a ja nechci každy smailjik definovat pro str_replace a tak to chci nějak narvat do funkce for() ale už jsem skoušel mnoho spůsobů ale stále mí žadný nejde zde jsem skoušel jeden:
$find=array ( for($i = 0;$i < 158;$i++) { "*$i*", } "*159*" ); $replace_with=array ( for($i = 0;$i < 158;$i++) { "<img src=\"styles/images/smiles/$i.gif\" alt=\"$i\" />", } "<img src=\"styles/images/smiles/159.gif\" alt=\"159\" />" ); |
||
juriad Profil |
str_replace bere jako argumenty i pole, můžeš tedy převést najednou všechny smajlíky.
Chceš tedy nahradit sekvenci *číslo* za <img src="styles/images/smiles/číslo.gif" alt="číslo" />" pro každé číslo?
Pokud ano, jsou vhodnější regulární výrazy: preg_replace('/\*(\d+)\*/', '<img src="styles/images/smiles/\1.gif" alt="\1" />', $text); \* znamená * \d je libovolná číslice; \d+ je posloupnost alespoň jedné číslice (...) závorky slouží k zapamatování /.../ lomítka jsou jen ohraničení výrazu V části nahrazení má \1 význam 1. zapamatované části. |
||
RockFire Profil |
GamerX:
Pro těch 159 takto: $find=array(); $replace_with=array(); for($i = 0;$i <= 159;$i++){ $find[] = "*$i*"; $replace_with[] = "<img src=\"styles/images/smiles/$i.gif\" alt=\"$i\" />"; } echo str_replace($find,$replace_with,$text); A pokud by ti stačilo nahradit sekvenci *číslo*, jak psal juriad, tak takto: echo preg_replace("/\*([0-9]+)\*/","<img src=\"styles/images/smiles/$1.gif\" alt=\"$1\" />",$text); |
||
GamerX Profil |
#4 · Zasláno: 9. 9. 2014, 11:39:08
Mockrát děkuji
|
||
Kcko Profil |
#5 · Zasláno: 9. 9. 2014, 12:36:47
A co se stane napíšu-li *4545454417* ;-) bude tam neexistující obrázek?
str_replace mi přijde vhodnější.
|
||
1Pupik1989 Profil |
#6 · Zasláno: 9. 9. 2014, 12:46:27
Nebo si upravit regulární výraz.
Třeba namátkově: $regex = '~\*(?:[0-9]{1,2}|1[0-4][0-9]|15[0-8])\*~'; |
||
RockFire Profil |
#7 · Zasláno: 9. 9. 2014, 13:44:12
Kcko:
Proto jsem mu napsal dvě varianty ;) |
||
Časová prodleva: 10 let
|
0