Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Jak naprogramovat vložení obrázku ze Steamu na fórum?

Zdravím, jak prosím vložím takový obrázek: http://cloud-3.steampowered.com/ugc/45290942036491 7527/1A1C8FE23C12936DEE3E41985E7BB01D3D69B682/ - to je jeho url ze steamu do bbkódu img na forech? Jelikož obrázky ze steamu nemají url končící klasicky na název+příponu, vždy to v bbcode vypadá pouze jako textový odkaz.. díky

Změna kategorie, původně: Internet
Změna předmětu, původně: jak vložit na forum obrazek ze steamu? (L-Core)

Předmět Autor Datum
co takhle si ho stahnout (right click - ulozit obrazek), a pak nahrat bud primo na forum z pc nebo p…
Thorak 06.01.2014 06:28
Thorak
Pomerne zbytecne slozite reseni, ktere tak trochu ztraci puvodni vyznam img bb kodu. Na nekterych fo…
guest123 06.01.2014 06:38
guest123
Pomerne zbytecne slozite reseni Pokud je tohle složité řešení, tak si teda počkám na nějaké "jednod…
IQ37 06.01.2014 20:18
IQ37
[img=http://cloud-3.steampowered.com/ugc/452909420364917527/1A1C8FE23C12936DEE3E41985E7BB01D3D69B682…
L-Core 06.01.2014 09:19
L-Core
Děkuji za odpověď, na mém fóru to bohužel nefunguje.. Jedná se o fórum, které je součástí CMS PHP-Fu…
guest123 06.01.2014 15:23
guest123
Tohle neumím, neznám. Jen mě čistě laicky napadá, co za "jpg|jpeg|gif|png|JPG|JPEG|GIF|PNG" něco při…
L-Core 06.01.2014 18:39
L-Core
Škoda.. Upřímně jsem si myslel že to půjde, že to bude nějaká taková maličkost, ale nic, "nefunguje"…
guest123 06.01.2014 19:04
guest123
Kdyby to fungovalo, to bych se opravdu hrdě divil :) To byl jen takový výstřel naslepo. Zkusím změn…
L-Core 06.01.2014 19:08
L-Core
Fungovalo by, keby si dal bodku pred a otáznik za tú hviezdičku (.*?). A ešte by si musel vyhodiť ko…
los 06.01.2014 20:10
los
Heh, děkuji ti velice, funguje to jak má! :-) Sám bych asi na to neměl ani šanci.. PS: Mohl bys mi…
guest123 06.01.2014 20:46
guest123
A samozřejmě díky L-Corovi za snahu poslední
guest123 06.01.2014 20:48
guest123

Děkuji za odpověď, na mém fóru to bohužel nefunguje.. Jedná se o fórum, které je součástí CMS PHP-Fusion (čili taková slabší odrůda phpBB) v 7.01.06
Nicméně, zdroj pro ten BBkód je takový:

if (!function_exists("img_bbcode_callback")) {
	function img_bbcode_callback($matches) {
		if (substr($matches[3], -1, 1) != "/") {
			return "<span style='display: block; width: 625px; max-height: 120px; overflow: auto;' class='forum-img-wrapper'><img src='".$matches[1].str_replace(array("?","&amp;","&","="), "", $matches[3]).$matches[4]."' alt='".$matches[3].$matches[4]."' style='border:0px' class='forum-img' /></span>";
		} else {
			return $matches[0];
		}
	}
}

$text = preg_replace_callback("#\[img\]((http|ftp|https|ftps)://)(.*?)(\.(jpg|jpeg|gif|png|JPG|JPEG|GIF|PNG))\[/img\]#si", "img_bbcode_callback", $text);
?>

+

$__BBCODE__[] = 
array(
"description"		=>	$locale['bb_img_description'],
"value"			=>	"img",
"bbcode_start"		=>	"[img]",
"bbcode_end"		=>	"[/img]",
"usage"			=>	"[img]".$locale['bb_img_usage']."[/img]"
);
?>

Dokázal by mi takhle někdo pomoct? Co upravit třeba..

Fungovalo by, keby si dal bodku pred a otáznik za tú hviezdičku (.*?). A ešte by si musel vyhodiť kontrolu v callback funkcii, či URL bez prípony končí lomítkom.

Ale to už rovno môžeš zmazať celú tú skupinu, ktorá kontroluje koncovku obrázka:

(\.(jpg|jpeg|gif|png|JPG|JPEG|GIF|PNG))

(tu je vidno, že autor regulárneho výrazu zbytočne vymenúva koncovky 2x, keďže definoval, že výraz je case insensitive)

Následne môžeš ešte trochu zjednodušiť to rozpoznávanie protokolov a zostane ti potom už len:

$text = preg_replace_callback('#\[img\]((https?|ftps?)://.*?)\[/img\]#i', 'img_bbcode_callback', $text);

(sú tam ešte zbytočné niektoré spätné lomítka, ale kvôli čitateľnosti ich tam nechávam)

Keďže zmenou regulárneho výrazu sa zmenili rozpoznané skupiny a ich indexy, tak je potrebné ešte upraviť ten callback. A bez ohľadu na to treba vyhodiť kontrolu, že URL bez prípony končí lomítkom:

function img_bbcode_callback($matches) {
	return "<span style='display: block; width: 625px; max-height: 120px; overflow: auto;' class='forum-img-wrapper'><img src='".htmlspecialchars($matches[1])."' alt='".htmlspecialchars($matches[1])."' style='border:0px' class='forum-img' /></span>";
}

Netestoval som to, tak dúfam, že som tam nespravil nejaký preklep.

Edit: Ešte by som vyhodil ten inline štýl z toho spanu a dal to do CSS súboru. Buď ako novú CSS triedu alebo rovno modifikoval .forum-img-wrapper (snáď sa to inde nepoužíva).

Edit 2: Ešte som vymazal modifikátor "s" z regulárneho výrazu. Jeho autor už asi nevedel, čo od dobroty.

Heh, děkuji ti velice, funguje to jak má! :-) Sám bych asi na to neměl ani šanci..

PS: Mohl bys mi ještě doporučit, jak se PHP nejlépe naučit? Jestli znáš nějaký opravdu dobrý tutorial někde na netu, nebo máš doporučenou literaturu apod.? (Něco dobře vysvětlené, jak se znám, někdy (=většinou) chvíli trvá než něco pochopím - a to chci tyhle věci jít za dva roky studovat :-) ) Byl bych ti vděčný. Díky

Zpět do poradny Odpovědět na původní otázku Nahoru