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?

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.

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny