Autor | Zpráva | ||
---|---|---|---|
Fisak Profil |
#1 · Zasláno: 12. 4. 2013, 00:49:52
dobrý den. Mám $text = "Ahoj *1* jak se máš *2* já docela dobře *3* ale mohlo by být lépe *1*" a ten bych potřeboval převést na "Ahoj <img src="1.png" /> jak se máš <img src="2.png" /> já docela dobře <img src="3.png" /> ale mohlo by být lépe <img src="1.png" />".
Vím že to jde udělat preg_match_all ale moje pokusy jsou marné... za 1. nevím přesně jak má vypadat ten regulérní výraz a jak to pak vypsat.. Je to blbost ale můj pokus byl toto: $text = "Ahoj *1* jak se máš *2* já docela dobře *3* ale mohlo by být lépe *1*"; $arr = preg_match_all('~*.*?'.'*~', $text, $matches); foreach ($arr as &$value) { echo "<img src=\".$value.".png\" />"; } |
||
Jan Tvrdík Profil |
Fisak:
preg_replace_callback preg_replace_callback('~\*(\d+)\*~', function ($m) { return sprintf('<img src="%d.png" />', $m[1]); }, $text); |
||
Fisak Profil |
#3 · Zasláno: 12. 4. 2013, 01:14:47 · Upravil/a: Fisak
Jan Tvrdík:
paráda funguje to a pokud bych chtěl dát popisek toho obrázku do title="*cislo*" tak pokud to napíšu takto: preg_replace_callback('~\*(\d+)\*~', function ($m) { return sprintf('<img src="/images/chat-smiles/%d.gif" title="*%d*" />', $m[1]); }, $echo_chat->text); tak to bohužel nefunguje.. proč? jinak děkuji moc :-) |
||
Jan Tvrdík Profil |
#4 · Zasláno: 12. 4. 2013, 01:26:21
|
||
Fisak Profil |
#5 · Zasláno: 12. 4. 2013, 01:44:14
Jan Tvrdík:
čtu a čtu a stále nenalézám odpověď.. |
||
Jan Tvrdík Profil |
Fisak:
Když neumíš použít sprintf , tak ho prostě nepoužívej :) Dokonce to bude kratší:
return '<img src="/images/chat-smiles/' . $m[1] . '.gif" title="*' . $m[1] . '*" />'; return sprintf('<img src="/images/chat-smiles/%d.gif" title="*%d*" />', $m[1], $m[1]); |
||
Fisak Profil |
#7 · Zasláno: 12. 4. 2013, 02:02:05
Jan Tvrdík:
Díky moc :-) |
||
1Pupik1989 Profil |
A proč preg_replace_callback?
$text = "Ahoj *1* jak se máš *2* já docela dobře *3* ale mohlo by být lépe *1*"; $text = preg_replace('~\*(\d+)\*~',"<img src='\\1.png' />",$text); |
||
Jan Tvrdík Profil |
#9 · Zasláno: 12. 4. 2013, 02:27:36
1Pupik1989:
„A proč preg_replace_callback?“ To bude tím, že jsem přepracovaný :) Máš samozřejmě pravdu, že tady stačí obyčejný preg_replace .
|
||
Radek9 Profil |
#10 · Zasláno: 12. 4. 2013, 09:43:14
Fisak:
Jinak, ještě trošku puntičkářství. Nejsou to regulérní výrazy, nýbrž regulární. ;-) |
||
Fisak Profil |
#11 · Zasláno: 12. 4. 2013, 10:07:53
Radek9:
Dobře pro příště vím :-) |
||
Časová prodleva: 11 let
|
0