Autor | Zpráva | ||
---|---|---|---|
LastHunter Profil * |
#1 · Zasláno: 19. 7. 2009, 10:51:59
Ahoj,
bohužel tuto část PHP naprosto neovládám a potřebuji udělat toto: Pracuji na třídě pro práci s CSS, která ho má "minifikovat" (to jsem již zvládnul, inspiroval jsem se Jakubem Vránou) a která má nahradit všechny výskyty url('cesta-k-obrazku') přímo za base64 obsah těch obrázků (HTML i CSS to umožňují), což se hodí pro nasazení na produkční server - naprostá minimalizace počtu HTTP požadavků. Má představa je taková - namatchují se všechny výskyty url('cokoli'), pak se vezme to 'cokoli' jako cesta k souboru, v PHP udělám base64_encode obsahu toho souboru a nahradím tím to 'cokoli' v původním CSS. Zopakuji to pro všechny výskyty. Ví někdo, jak na to? :) Díky moc. Ondřej Mirtes |
||
Majkl578 Profil |
#2 · Zasláno: 19. 7. 2009, 17:05:37 · Upravil/a: Majkl578
myslim, ze to by nemel byt problem:
$data = "background: url('http://diskuse.jakpsatweb.cz/img/button_code.gif') no-repeat;"; $data = preg_replace_callback('~url\(\'([^\)]+)+?\'\)~i', function($match) { $imgInfo = getimagesize($match[1]); return 'url(data:' . $imgInfo['mime'] . ';base64,' . base64_encode(file_get_contents($match[1])) . ')'; }, $data); prevede to primo na spravny mime obrazku. je potreba, aby bylo v nastaveni povoleno allow_url_fopen. vyzaduje php 5.3 (kvuli closure, pro starsi php potreba prevest na create_function). |
||
Časová prodleva: 2 měsíce
|
|||
uestla Profil |
#3 · Zasláno: 5. 9. 2009, 19:37:00
Majkl578
Ten regulár není nejšťastnější vzhledem k následující a jí podobným konstrukcím (i jiným detailům - tvůj akceptuje jen apostrofy): <style> @import url('jiny_styl.css'); </style> Upravil bych jej na $regexp = '~url\(([\'"])([^\)]+\.(?:png|jpe?g|gif))\\1\)~i'; V callbacku je samozřejmě třeba nahradit $match[1] za $match[2]. |
||
Časová prodleva: 15 let
|
0