Autor | Zpráva | ||
---|---|---|---|
KubaFibi Profil |
#1 · Zasláno: 14. 1. 2012, 20:24:35
Dobrý den,
zde mám funkci pro převod bb-kódu do html. Dnes jsem se bb-kódy začal zabývat, takže jsem se pro začátek nechal inspirovat kódy jiných uživatelů. function bb2html($text){ $bb[] = "/\[[iI]\](.+?)\[\/[iI]\]/s"; $html[] = "<i>\\1</i>"; $bb[] = "/\[[bB]\](.+?)\[\/[bB]\]/s"; $html[] = "<b>\\1</b>"; $bb[] = "/\[[uU]\](.+?)\[\/[uU]\]/s"; $html[] = "<u>\\1</u>"; $text = preg_replace($bb, $html, $text); return $text; } Funguje, ale když ji budu volat např. takto: echo bb2html("TEXT[/b"); (nebo s jinak neuzavřeným bb-kódem), zobrazí se [b]TEXT[/b . Potřeboval bych funkci nějak upravit, aby se při takovémto volání funkce zobrazilo pouze TEXT , bez těch špatně zapsaných [b][/b
Předem děkuji za pomoc. |
||
Str4wberry Profil |
#2 · Zasláno: 14. 1. 2012, 20:44:51
„echo bb2html("TEXT[/b"); (nebo s jinak neuzavřeným bb-kódem), zobrazí se [>b]TEXT[/b“
Pochybuji, že se tam přidá na začátek „ [b>] “.
Jinak není lepší v případě „ [b>][/b “ spíš špatně zadaný kód opravit? Tj. mít koncové „] “ v regulárním výrazu nepovinné, pokud se jedná o častou chybu při zadávání.
Pokud chceš řešit i další chyby při zadávání, není nic jednoduššího, než po uvedeném nahrazení všechny znaky, co vypadají jako pokus o BB kód, nemilosrdně odstranit. |
||
KubaFibi Profil |
#3 · Zasláno: 14. 1. 2012, 20:56:49
Str4wberry:
„Pochybuji, že se tam přidá na začátek „[b]“.“ To [b] se tam přidalo, taky jsem nejdřív myslel, že se [b] nahradí za <b> , ale ono se to nahrazuje pouze když je bb-kód zapsaný celý.
Nad opravou jsem neuvažoval, ale bylo by to lepší. Hlavně jsem se chtěl zbavit toho [b][/b které by tam v textu překáželo. Ano, oprava bude lepší. Jak to tedy udělat, aby bylo koncové ] nepovinné?
|
||
Str4wberry Profil |
#4 · Zasláno: 14. 1. 2012, 21:12:41
Pochyboval jsem nad tím, že se z „
TEXT[/b “ udělá zmíněnou funkcí „[>b][/b “.
„Jak to tedy udělat, aby bylo koncové ] nepovinné?“ Použít příslušný kvantifikátor. |
||
KubaFibi Profil |
#5 · Zasláno: 14. 1. 2012, 21:21:00
Str4wberry:
„Pochyboval jsem nad tím, že se z ‚TEXT[/b‘ udělá zmíněnou funkcí ‚[>b][/b‘.“ Aha, už to vidím, jen jsem se trochu upsal. Chtěl jsem napsat bb2html("[b]TEXT[/b"); .
Takže, pokud jsem správně pochopil tak to zapíšu takto: function bb2html($text){ $bb[] = "/\[[iI]\](.+?)\[\/[iI]\]*/s"; $html[] = "<i>\\1</i>"; $bb[] = "/\[[bB]\](.+?)\[\/[bB]\]*/s"; $html[] = "<b>\\1</b>"; $bb[] = "/\[[uU]\](.+?)\[\/[uU]\]*/s"; $html[] = "<u>\\1</u>"; $text = preg_replace($bb, $html, $text); return $text; } Zřejmě to funguje. Ty regulérní výrazy mi ještě moc nejdou, takže opravdu děkuji. |
||
Časová prodleva: 12 let
|
0