Autor | Zpráva | ||
---|---|---|---|
SteveO Profil * |
#1 · Zasláno: 28. 8. 2016, 14:22:17
Dobrý den, je proměnná s HTML kódem $description. Ten může obsahovat jeden nebo i více tagů <img>.
Potřeboval bych nahradit obsah všech atributů src takto: <img src="http://web1.cz/obrazek.jpg"> na <img src="http://web2.cz/img/' . base64encode("http://web1.cz/obrazek.jpg") . '"> Snažím se o to s tímto kódem, ale nedaří se, poradí prosím někdo? Díky moc. $description = preg_replace_callback('#<img(.*)src="(.*)"(.*)>#i', function($matches) { return '<img'.$matches[1].'src="img/'.base64_encode($matches[2]).'"'.$matches[3].'>'; }, $description); |
||
Fisir Profil |
#2 · Zasláno: 28. 8. 2016, 16:30:47
Reaguji na Stevea:
Jediný problém, který tam vidím, je, že jsi při nahrazení zapomněl na doménu: $description = preg_replace_callback('#<img(.*)src="(.*)"(.*)>#i', function($matches) { return '<img'.$matches[1].'src="http://web2.cz/img/'.base64_encode($matches[2]).'"'.$matches[3].'>'; }, $description); Ale jinak to funguje. |
||
SteveO Profil * |
#3 · Zasláno: 28. 8. 2016, 23:55:01
Díky, už jsem to rozchodil, problém byl v tom, že mezitím, co jsem hledal správné řešení, se mi změnila zdrojová data.
Tento kód mi funguje, ale nahrazení se provede vždy jen v poslední výskytu tagu <img> v $description. U ostatních zůstane původní src. Ale preg_replace_callback by snad mělo fungovat na všechny výskyty hledaného řetězce, nebo ne? $description = preg_replace_callback('/<img(.*)src="([^"]*)"(.*)>/i', function($matches) { return '<img'.$matches[1].'src="img/'.base64_encode($matches[2]).'"'.$matches[3].'>'; }, $description); |
||
juriad_ Profil * |
#4 · Zasláno: 29. 8. 2016, 00:07:08
Za to muze ta prvni hvezdicka, ktera je zrava. Pozere vse od prvniho img po posledni src. Dej za tu hvezdicku otaznik nebo tecku nahrad za \s.
|
||
SteveO Profil * |
#5 · Zasláno: 29. 8. 2016, 00:18:03
Chci být připraven i na možnost, že tag bude vypadat takto:
<img alt/style/cokoliv="xxx" src="xxx"> To by ten otazník vyřešil? |
||
Keeehi Profil |
#6 · Zasláno: 29. 8. 2016, 02:21:16
SteveO:
Ano, otazníku to vadit nebude. |
||
Časová prodleva: 7 let
|
0