BBCode podporuje několik způsobů generování URL.

  • První z nich používá značku , za znakem = musí být požadovaná adresa URL. Například pro odkaz na phpBB.com můžete použít:

    Navštivte phpBB!

  • Pokud chcete, aby se jako text odkazu zobrazila samotná adresa URL, můžete jednoduše provést následující:

    http://www.phpbb.com/

  • Kromě toho phpBB podporuje funkci tzv Automatické odkazy, to přeloží jakoukoli syntakticky platnou adresu URL na odkaz bez potřeby značek nebo dokonce předpony http://. Například zadáním www.phpbb.com do vašeho příspěvku automaticky vznikne www.phpbb.com, když je příspěvek zobrazen.
  • Totéž platí pro e-mailové adresy, adresu můžete buď zadat explicitně:

    [e-mail chráněný]

    co dá [e-mail chráněný] nebo stačí zadat [e-mail chráněný] na váš příspěvek a při zobrazení bude automaticky převeden.

Stejně jako u všech ostatních značek BBCode můžete adresy URL obalit jakýmikoli jinými značkami, např (viz další odstavec), [b] atd. Stejně jako u formátovacích značek je správné vnoření značek na vás, například:

http://www.phpbb.com/images/phplogo.gif

špatně, což může mít za následek pozdější smazání vašeho příspěvku, takže buďte opatrní.

Přejít na: Vyberte fórum pro plánování těhotenství. Bereme... Chci dítě! Plánování bereme ... Plánovací řečníci Hochushki - baviči Deníky plánování těhotenství Těhotenství Mluvčí těhotných Výběr jména pro dítě Archiv sekce Těhotenství Zdraví nastávající matky a dítěte Porody a porodnice Blahopřání k porodu Diskuze porodnic Úvod narození Děti - péče o dítě, výživa a ... Péče o dítě O jídle. Vše o kojenecké výživě Povídání o výrobcích pro děti -... Kojení Péče o miminko. Archivy fóra Archivy fóra Zboží pro děti Dětské zdraví a léky pro... Očkování Ostatní děti Dětská stomatologie Alergologie, dermatologie, imm... Diskuse zdravotnických zařízení... Naše děti. Komunikace vrstevníků ... Klub dvojčat, trojčat a tak dále ... Pozemková záležitost Velké matky s mnoha dětmi Vychováváme děti. Rodinné vztahy... Rozvoj a výchova dětí Řemesla - vyrábíme s dětmi Dětské knihy, filmy, audio pohádky Kroužky, kroužky a vzdělávací centra Kam s dítětem. Děti... Mateřské školy a chůvy Mateřské školy v Novosibirsku: adresa... Sport pro děti Škola a školáci. Univerzity a vysoké školy, ... Rodinná výchova. Externí stáže škol a gymnázií Novosibirsku a... Archiv školní sekce Odchovanci. Přijetí. Opec... Fórum pro diskuzi o osobní historii... Dospívající. Děti a puberta Domov a rodina Vše o nemovitostech. Domy, byty... Opravy a interiér Výstavba domů, garáží,... Venkovský spolek Sibmama. Ogor... Venkovský trh. Zboží pro chaty, ... Zahrada a zahrada (semena, sazenice, ... Zahrady Sibiře - autorská témata Naše květinová zahrada Diskutujeme o chatách - zahrada ... příprava na... Nákupy pro domácnost Archiv fóra Fórum archiv Nový rok Svatební fórum Svatební oznámení (DO) Kulinářské fórum Kulinářské flash mob Cukrárny, pekařství Přípravky - nakládané okurky, džemy, m... Do obchodu s potravinami Kuchyňské náčiní - nádobí a Vaření archiv Hobby Sběratelé Stolní... Klub milovníků panenek Kinder- příběh - sběratelský... Zvířata Kočky Psi Reklamy Zvířátka Nákup, ... Pomoc zvířatům ... Fialky, saintpaulie, gloxinie a k... Foto květinová zahrada Archiv květinového fóra Vyšívání Šití - techniky, vzory, diskuze ... quiltování, patchwork .. Archivní sekce Vyšívání Zboží pro vyšívání (TO) Oznámení... Rodinný život Sibpapa O sexu (18+) Photoforum. Vše o foto Automotive forum Archiv Autofora Cestování a turistika. Hotely a sa... Rusko a země blízkého zahraničí... Sibiř a Altaj. Volnočasové aktivity... Turecko - Antalya, Marmaris, Sta... Jihovýchodní Asie - Thajsko, Vietnam, Čína, ... PŘED rubrikou Cestování. Bydlení, ... Krása a péče. Modní styl. Zd... Péče o tělo a obličej. Kosmetička... Péče o vlasy. Účesy Dostaňte se do formy! Sport a fitness. Pl... Léčba a zdraví dospělých. Zlato... Móda a styl. Diskuze o trendech Úspěšný nákup Klub milovníků parfémů Parfémové nápoje Obecný archiv krásy Práce. Odpočinek. Obecné otázky O všem Dnes ve světě Jak děsivé je žít Právní vzdělávací program Banky a finance Práce a vzdělávání. Pro dospělé Vlastní podnikání. Fórum pro podnikatelky Nabídky ke koupi/prodeji... O víře Kulturní život Věda a zábava o životě. Humor, vtipy. Ig... Poznej sám sebe: duchovní i tělesný... Sibmama's life Diskuze o webu a fóru Sibmama Club. Slevy v Novosibirsku... Testovací jízda Sibmama Místo setkání Soutěže Cenová nabídka Archiv fór Archiv fóra Sibmama Místo setkání Archiv anket Zelené fórum. Archivovat gadgety. Archiv Charitativní rodičovská... Sbírání pomoci pro nemocné děti Máma potřebuje pomoc Archivy charitativního fóra Fóra pro jiná města a země Zahraniční matky a ti, kteří jsou připraveni... Sibmums v Moskvě. Regiony Fórum Krasnojarských maminek a tatínků Fórum Tomských maminek a tatínků Omské sibmumy zde komunikují:) Fórum novokuzněckých maminek a tatínků Fórum Kemerovských maminek a tatínků - diskuse... Stavba a opravy v Barnaulu a A... Domácnost v Barnaulu. ... Zdraví dospělých v Barnaul Barnaul Naše prázdniny Dámské triky. Krása, péče, ... Turistika a cestování Obyvatelé Barnaulu Barnaul. Zvířata a rostliny, f... Kulturní život v Barnaul pro... Archiv sekce Barnaul Těhotenství a porod v Barnaul Altajské děti jsou o výchově... Dětské sporty v Barnaulu a Altě... Mateřské školy, školy, univerzity, vysoké školy... Zdraví našich dětí - Barnaulův archiv. Altajské děti Dětské tábory - letní, školní... Nástěnka Barnaul Barnaul. DO Oblečení a další zboží... Barnaul DO Dětská obuv Barnaul. DO Dětské oblečení Barnaul. DO Zboží pro děti Barnaul. DO Obuv pro dospělé Barnaul. DO Oblečení pro dospělé Barnaul DO Barnaul Real Estate DO. Prodej zvířat a... Barnaul. DO Nábytek a kování Barnaul. DO Práce a služby DO Krása a péče o tělo v Ba... Barnaul. PŘED Doučováním, kroužky... Barnaul. Knihař - PŘED Knihy a ... Daruji zdarma. Inzeráty v Barnaul TO Koupit různé v Barnaul. Objem... Barnaul společné nákupy... Barnaul. JV Oblečení (dospělé a... Barnaul. JV Obuv, galanterie... Barnaul. JV Ostatní zboží Barnaul. Úspěšné pískoviště JV v Biysku Společné nákupy Hobby klubu... Barnaul. TO) v Novosibirsku Oblečení pro miminka do r. ročníku (do ... Oblečení pro předškoláky (od 86 ... Zboží pro školáky (od 122 ... Dětská doprava.Kočárky a auta... Dětský nábytek (DO)) Zboží pro domácnost a rodinu (DO) Oblečení pro dospělé (DO) Zboží pro těhotné a kojící ženy... Obuv pro dospělé (DO) Automobilový průmysl DO Ruční výroba ( DO) - Ruční výroba.... Nábytek a objemné zboží... Domácí spotřebiče, počítače atd... Sekce archivu Ruční výroba (DO) Práce a služby (DO) Služby pro děti.a péče (DO) Pomoc při učení Lektoři (DO) Výměnné a nájemní místo Daruji Nemovitosti (DO) Inzeráty na pronájem nemovitostí Nákupní klub Komerční nabídky Vše pro děti - péče, rozvoj,... Zahraniční nákupy Síťový marketing, MLM Košík pro Vás i ... Zboží a služby pro domácnost, stavebnictví ... JV - mánie (Společné nákupy b ... Archiv JV mánie Milovníci nakupování - chlubáci a velcí ... Konzultace specialistů Konzultace gynekologa, d... Konzultace dětského lékaře Med... Konzultace očního lékaře Konzultace ortodontisty Rodinný poradce. Psycholog A ... Prasátko rodičovské zkušenosti Konzultace sexuologa (18+) Konzultace specialistů. Archiv Konzultace dětského lékaře Konzultace specialistů kliniky Konzultace právníka Konzultace specialisty na M... Konzultace právníka Konzultace lékařů spermatu... Konzultace lékařských specialistů Konzultace homeopatického lékaře Odborné konzultace lékařů. .. Konzultace lékařských specialistů .. Konzultace očního lékaře Igora... Konzultace dětského očního lékaře... Konzultace dětského urologa, ... Konzultace dětského urologa, ... Konzultace dospělého neurologa Konzultace dětského neurologa... do ma. .. Psychologové Alexander a Katerina... Dětské odborné konzultace... Ortodontické konzultace

BBCode je speciální implementace HTML. O tom, zda můžete skutečně používat BBCode ve svých příspěvcích na fóru, rozhoduje administrátor. Kromě toho můžete zakázat BBCode na základě jednotlivých příspěvků prostřednictvím formuláře pro odesílání. Samotný BBCode je podobný stylu HTML, značky jsou uzavřeny v hranatých závorkách [ a ] ​​spíše než< and >a nabízí větší kontrolu nad tím, co a jak se něco zobrazuje. V závislosti na šabloně, kterou používáte, můžete zjistit, že přidávání BBCode do vašich příspěvků je mnohem snazší prostřednictvím klikacího rozhraní nad oblastí zpráv ve formuláři pro odesílání. I v tomto případě se vám může hodit následující průvodce.

Formátování textu

Chcete-li změnit barvu nebo velikost textu, můžete použít následující značky. Mějte na paměti, že vzhled výstupu bude záviset na prohlížeči a systému diváka:

  • Změna barvy textu se dosáhne jeho zalomením . Můžete zadat buď rozpoznaný název barvy (např. červená, modrá, žlutá atd.) nebo alternativu hexadecimální trojice, např. #FFFFFF, #000000. Chcete-li například vytvořit červený text, můžete použít:

    Ahoj!

    Ahoj!

    Oba vydají Hello!

  • Změna velikosti textu se provádí podobným způsobem pomocí . Tato značka závisí na šabloně, kterou uživatel vybral, ale doporučený formát je číselná hodnota představující velikost textu v procentech, počínaje 20 (velmi malý) až po 200 (velmi velký) ve výchozím nastavení. Například:

    MALÝ

    bude obecně MALÝ

    OBROVSKÝ!

    bude VELKÉ!

Ano, samozřejmě můžete, například abyste upoutali něčí pozornost, můžete napsat:

[b] PODÍVEJ SE NA MĚ!

toto by vystoupilo PODÍVEJ SE NA MĚ!

Nedoporučujeme však vydávat mnoho textu, který vypadá takto! Pamatujte, že je na vás, na plakátu, abyste zajistili správné uzavření štítků. Například následující je nesprávné:

[b][u] To je špatně

Citování a výstup textu s pevnou šířkou

Text můžete citovat dvěma způsoby, s odkazem nebo bez něj.

  • Když použijete funkci Citace k odpovědi na příspěvek na nástěnce, měli byste si všimnout, že text příspěvku je přidán do okna zprávy uzavřeného v blok. Tato metoda vám umožňuje citovat s odkazem na osobu nebo cokoli jiného, ​​co se rozhodnete uvést! Například citovat kus textu Blobby napsal, že byste zadali:

    Text Mr. Blobby napsal, že půjde sem

    Výsledný výstup automaticky přidá "Pan Blobby napsal:" před samotný text. Pamatuju si tě musí vložte uvozovky "" kolem jména, které citujete, nejsou volitelné.

  • Druhá metoda umožňuje něco slepě citovat. Chcete-li to využít, vložte text do značky. Při zobrazení zprávy se jednoduše zobrazí text v bloku nabídky.

Pokud chcete vypsat kus kódu nebo vlastně cokoliv, co vyžaduje pevnou šířku, např. Písmo typu Courier, kterým byste měli text uzavřít značky, např.

echo "Toto je nějaký kód";

Veškeré formátování použité v rámci tagy se při pozdějším zobrazení zachovají. Zvýraznění syntaxe PHP lze povolit pomocí a doporučuje se při odesílání ukázek kódu PHP, protože zlepšuje čitelnost.

Generování seznamů

BBCode podporuje dva typy seznamů, neuspořádané a uspořádané. Jsou v podstatě stejné jako jejich ekvivalenty HTML. Neuspořádaný seznam vypíše každou položku ve vašem seznamu postupně jednu po druhé a každou odsadí znakem odrážky. Chcete-li vytvořit neuspořádaný seznam, použijte a definujte každou položku v seznamu pomocí [*] . Chcete-li například uvést své oblíbené barvy, můžete použít:


[*] Červené
[*] Modrý
[*] Žlutá

To by vytvořilo následující seznam:

  • Žlutá

Druhý typ seznamu, uspořádaný seznam, vám dává kontrolu nad tím, co je výstupem před každou položkou. Chcete-li vytvořit uspořádaný seznam, který používáte vytvořit číslovaný seznam nebo alternativně pro abecední seznam. Stejně jako u neuspořádaného seznamu jsou položky specifikovány pomocí [*] . Například:


[*] Jděte do obchodů
[*] Kupte si nový počítač
[*]

vygeneruje následující:

  1. Jděte do obchodů
  2. Kupte si nový počítač
  3. Nadávejte na počítač, když se zhroutí
Zatímco pro abecední seznam byste použili:


[*] První možná odpověď
[*] Druhá možná odpověď
[*] Třetí možná odpověď

  1. První možná odpověď
  2. Druhá možná odpověď
  3. Třetí možná odpověď

Vytváření odkazů

PhpBB BBCode podporuje řadu způsobů vytváření URI (Uniform Resource Indicators), lépe známých jako URL.

  • První z nich používá cokoli napíšete za znak = způsobí, že obsah této značky bude fungovat jako adresa URL. Například pro odkaz na phpBB.com můžete použít:

    Navštivte phpBB!

    Navštivte phpBB! Upozorňujeme, že odkaz se otevře ve stejném okně nebo v novém okně v závislosti na preferencích prohlížeče uživatele.

  • Pokud chcete, aby se jako odkaz zobrazovala samotná URL, můžete to udělat jednoduše pomocí:

    http://www.phpbb.com/

    To by vytvořilo následující odkaz, http://www.phpbb.com/

  • Navíc phpBB nabízí něco, co se nazývá Magické odkazy, to změní jakoukoli syntakticky správnou adresu URL na odkaz, aniž byste museli zadávat jakékoli značky nebo dokonce úvodní http://. Například zadání www.phpbb.com do vaší zprávy automaticky povede k výstupu www.phpbb.com, když si zprávu zobrazíte.
Stejně jako u všech značek BBCode můžete adresy URL obalit kolem jakékoli jiné značky, např (viz další záznam) [b], atd. Stejně jako u formátovacích značek je na vás, abyste zajistili správné pořadí otevření a zavření, například:

není správný, což může vést ke smazání vašeho příspěvku, takže buďte opatrní.

Zobrazovat obrázky v příspěvcích

PhpBB BBCode obsahuje značku pro vkládání obrázků do vašich příspěvků. Při používání této značky je třeba pamatovat na dvě velmi důležité věci: mnoho uživatelů si neváží toho, že se v příspěvcích zobrazuje spousta obrázků, a za druhé obrázek, který zobrazujete, již musí být dostupný na internetu (nemůže existovat například pouze na vašem počítači, takže jej nahrajte obrázek na váš web a poté na něj odkaz). Chcete-li zobrazit obrázek, musíte obklopit adresu URL odkazující na obrázek značky. Například:

https://www.google.com/intl/cs_ALL/images/logo.gif

Jak je uvedeno v části URL výše, obrázek můžete zabalit do a označte, chcete-li, např.

https://www.google.com/intl/cs_ALL/images/logo.gif

Občas mám potřebu ve svých projektech používat „interpret“ BBCode (napsaný v PHP) a vždy není čas hledat nějaké více či méně stravitelné řešení, což nakonec vyústí v použití či vytvoření „berliček“ pro každý konkrétní případ.
Ale teď se zdá, že jsem našel to, co jsem chtěl.

Moje stížnost na taková hotová řešení je obvykle v první řadě neschopnost těchto knihoven správně zacházet s odstavci. Ve skutečnosti většinou nepoužívají odstavce vůbec (tag P), místo toho v důsledku své práce značku jednoduše vloží
, nahrazující normální znaky zalomení řádku. Tento způsob napodobování odstavců v 98 procentech považuji mírně řečeno za nevhodný. Ale protože zalamování řádků je v rámci možností
mnohem snazší implementovat místo „lidského“

, tedy většina 🙁 Někteří si dokonce vymýšlejí výmluvy, že prý s br je ještě správnější, částečně kvůli podobné lenosti vývojářů různých hotových knihoven, další část lidí si myslí, že tag P je zastaralý (ostatně i v mnoha hotových výrobcích a webech se odstavce tvoří používáním
) 🙂

Začněme

Ale zdá se, že je světlo na konci tunelu. Jedná se o předpřipravenou třídu pro práci s BBCode , která očividně dělá svou práci velmi dobře (nic lepšího jsem zatím neviděl). Jediným negativem je, že dokumentace poskytovaná na webu není v ruštině. Toto mínus chci v tomto článku překonat a uvést příklad použití třídy s ruskými komentáři.

Nejprve si musíte stáhnout knihovnu (v době psaní tohoto článku byla verze knihovny 0.3.3). Ve staženém archivu ve složce src najdete dva soubory, které potřebujeme: stringparser.class.php a stringparser_bbcode.class.php.

Jako příklad řekněme, že máme prázdný soubor „index.php“ a vedle něj vytvoříme složku „/bbcode/“ obsahující dva výše zmíněné soubory.
Minimální obsah souboru "index.php" by měl být například tento (spuštěním tohoto příkladu můžete okamžitě zjistit, zda knihovna funguje):

< ?php //Вставляем файл библиотеки require_once "bbcode/stringparser_bbcode.class.php"; //Создаем объект класса StringParser_BBCode $bbcode = new StringParser_BBCode (); //Добавляем объекту класса понятие о тэге [b] //(в итоге только этот тэг и будет //обрабатываться этим классом) $bbcode->addCode("b", "simple_replace", null, array("start_tag" => " ", "end_tag" => ""), "inline", pole ("blok", "inline"), pole ()); // Analyzujte testovací řetězec a odešlete jej do prohlížeče echo $bbcode->parse ("Testovací text, toto slovo by mělo být [b ]tučné"); ?>

funkce addCode

Možná nejzajímavější v tomto kódu je funkce addCode objektu třídy StringParser_BBCode, zde je její prototyp a seznam popisů parametrů:

Void addCode(řetězec $kód, řetězec $typ, řetězec $zpětné volání, řetězec $params, řetězec $content_type, pole $allowed_in, pole $not_allowed_in);

Tato funkce přidává koncept určitých kódů (bb-kódů) pro objekt třídy, aby pak mohla tyto kódy detekovat v textu a odpovídajícím způsobem je zpracovat. Tito. můžeme říci, že zpočátku objekt třídy StringParser_BBCode o standardních bb-kódech vůbec nic neví a není schopen je nijak zpracovat. Proto po každé inicializaci bude nutné tento objekt „natrénovat“ ve všech variantách bb-kódů.

$code (hodnota je v příkladu 'b') Kód, který se má hledat v textu, který má být zpracován. Tito. zadáte-li testovací kód, bude značka vyhledána ve zpracovávaném textu a zpracována v souladu s pokyny v ostatních parametrech příslušné funkce. $type (v příkladu hodnota 'simple_replace') Označení toho, jak má být značka zpracována (jakého typu je). Existují různé předdefinované typy značek, které budou popsány níže. V našem příkladu je zadán typ 'simple_replace', což znamená, že tag bude spárován (otvírací tag [b] a uzavírací ) a že tyto tagy budou nahrazeny níže uvedenými html tagy. $callback (v příkladu null) Umožňuje zadat název funkce, která má být volána při zpracování nalezeného tagu v textu. V případě značky typu ‚simple_replace‘ se tato funkce nevolá, a proto lze v tomto parametru zadat hodnotu null. $params (v příkladu má hodnotu array('start_tag' => ' ‘, ‘end_tag’ => ‘')) Tento parametr v podstatě určuje, která html značka by měla být vložena místo značky bb. Název parametrů přímo závisí na tom, jaký typ tagu jsme uvedli v parametru $type. $content_type (v příkladu hodnota 'inline') Typ vnitřního obsahu značky. Může nabývat hodnot: 'inline', 'block', 'link', 'image'. Pokud se nemýlím, můžete si také předepsat své vlastní typy, abyste pak mohli pro tento obsah určit své vlastní individuální filtry (viz příklad použití filtrů níže). $allowed_in (v příkladu má pole hodnot ('block', 'inline')) V tomto parametru můžete určit, jaké typy objektů uvnitř může být vytvořený bb-kód (jeho zpracování bude jinak jednoduše ignorováno). V našem příkladu jsme naznačili, že prvek může být umístěn jak uvnitř blokových prvků, tak uvnitř lineárních prvků. $not_allowed_in (v příkladu nastaveno na array()) Má opačný význam než předchozí parametr.

Typy zpracování tagů

Popis voleb pro hodnotu parametru $type ve funkci addCode.

'simple_replace' Popisuje jednoduchý párový tag. Při použití tohoto typu zpracování značek musí být v parametru funkce 'params' přítomny dvě buňky: $params['start_tag'] a $params['end_tag']. 'start_tag' by měl obsahovat analogii úvodní značky v html a 'end_tag' by měl obsahovat ukončovací značku. 'simple_replace_single' Stejné jako 'simple_replace', ale používá se pouze pro jednotlivé značky, které ve skutečnosti nemají obsah (jako br, hr atd.). Vyžaduje pouze parametr $params['start_tag']. 'callback_replace' U tohoto typu outsourcujete zpracování nalezených shod (pomocí vaší funkce zpětného volání) pro spárovanou značku. 'callback_replace_single' Stejné jako 'callback_replace', ale pouze pro jednotlivé značky. 'usecontent' Stejné jako 'callback_replace', pouze v obsahu takového tagu nebudou zpracovány další tagy, např. to je vhodné pro tag code. 'usecontent?' Tento typ se může chovat jako 'usecontent' nebo jako 'callback_replace' v závislosti na situaci. Relevance jedné nebo druhé možnosti je určena přítomností předem navrženého atributu v bb tagu. Pokud je atribut nalezen, použije se zpracování 'callback_replace', jinak bude značka zpracována jako 'usecontent'. Název prohledávatelného atributu je určen parametrem $params['usecontent_param']. Pokud je zadán název default, pak se předpokládá hodnota atributu přiřazeného přímo ke značce, například , hodnota výchozího atributu bude text "http://link". Tato technika se často používá například u tagu. Tuto značku lze použít ve dvou formách: http://www.example.com/ a Text odkazu a také [b]tučný text. V prvním případě bude použit typ 'usecontent', protože text odkazu by měl být zobrazen bez jakéhokoli formátování (a ve skutečnosti samotný odkaz bude nesprávný, pokud obsahuje cizí znaky). Jinak by měl být použit typ 'callback_replace', as samotný odkaz je předán jako samostatný parametr a text zarámovaný v odkazu může obsahovat určitý druh formátování.
Poznámka: Pro jejich vyhledávání můžete zadat několik parametrů, pro které musíte v $params['usecontent_param'] předat nikoli řetězec, ale pole obsahující řetězce. Například: $bbcode->addCode (…, array('usecontent_param' => pole ('parametr1', 'parametr2')), …);. 'callback_replace?' je opakem 'usecontent?'. Pokud se ve značce vyskytuje jeden z atributů uvedených v usecontent_param, bude s ním zacházeno jako s 'usecontent', jinak jako 'callback_replace'.

Příklad kódu z "bojových" podmínek

Zde je příklad souboru index.php s rozšířenější konfigurací třídy pro zpracování více značek, ve kterém můžete také pochopit, jak fungují funkce zpětného volání atd.:

< ?php //Вставляем файл библиотеки require_once "bbcode/stringparser_bbcode.class.php"; //Приводит разнообразные переводы строк //разных операционных систем в единый формат (\n) function convertlinebreaks ($text) { return preg_replace ("/\015\012|\015|\012/", "\n", $text); } //Удалить все символы, кроме переводов строк function bbcode_stripcontents ($text) { return preg_replace ("/[^\n]/", "", $text); } //Функция для обработки ссылок function do_bbcode_url ($action, $attributes, $content, $params, $node_object) { if (!isset ($attributes["default"])) { $url = $content; $text = htmlspecialchars ($content); } else { $url = $attributes["default"]; $text = $content; } //Часть функции, которая занимается //только валидацией данных тэга if ($action == "validate") { if (substr ($url, 0, 5) == "data:" || substr ($url, 0, 5) == "file:" || substr ($url, 0, 11) == "javascript:" || substr ($url, 0, 4) == "jar:") { return false; } return true; } //Непосредственное преобразование тэга в //html вариант с возвращением результата return "".$text.""; ) // Funkce pro vkládání obrázků funkce do_bbcode_img ($action, $attributes, $content, $params, $node_object) ( //Část funkce, která //ověřuje pouze data tagů, pokud ($ action == "validate") ( if (substr ($content, 0, 5) == "data:" || substr ($content, 0, 5) == "file:" || substr ($content, 0 , 11) == "javascript:" || substr ($content, 0, 4) == "jar:") ( return false; ) return true; ) //Přímý převod značky na //html verzi s vrácením výsledek návrat " ";) //Vytvořte objekt třídy StringParser_BBCode $bbcode = new StringParser_BBCode(); //Přidejte filtr (podrobnosti naleznete v offline dokumentaci), //pomocí naší funkce convertlinebreaks, která //převede konce řádků v text do jednoho $bbcode ->addFilter (STRINGPARSER_FILTER_PRE, "convertlinebreaks"); //Přidejte naše vlastní analyzátory pro různé typy objektů //(další podrobnosti naleznete v offline dokumentaci) //Uvádíme, která funkce je obsahem tyto značky by měly projít například funkcí //htmlspecialchars, aby se zabránilo XSS atd. $bbcode->addParser (pole ("blok", "inline", "link", "listitem"), "htmlspecialchars"); $bbcode->addParser (pole ("blok", "inline", "odkaz", "listitem"), "nl2br"); $bbcode->addParser ("seznam", "bbcode_stripcontents"); //Přidat bb- kód použitý jako: //Textová hlavička první úrovně $bbcode->addCode ("h1", "simple_replace", null, array ("start_tag" => "

", "end_tag" => "

"), "block", array ("listitem", "block", "link"), pole ()); //Přidejte bb-kód použitý ve tvaru: //Text záhlaví druhé úrovně $bbcode->addCode ( "h2", "simple_replace", null, array("start_tag" => "

", "end_tag" => "

"), "block", array ("listitem", "block", "link"), pole ()); //Přidejte bb-kód použitý ve tvaru: //Text nadpisu třetí úrovně $bbcode-> addCode ( "h3", "simple_replace", null, array("start_tag" => "

", "end_tag" => "

"), "block", array ("listitem", "block", "link"), pole ()); //Přidejte bb-kód použitý ve tvaru: //Text nadpisu čtvrté úrovně $bbcode-> addCode ( "h4", "simple_replace", null, array("start_tag" => "

", "end_tag" => "

"), "block", array ("listitem", "block", "link"), pole ()); //Přidat bb-kód použitý jako: //Text nadpisu páté úrovně $bbcode->addCode ( "h5 ", "simple_replace", null, array("start_tag" => "
", "end_tag" => "
"), "block", array ("listitem", "block", "link"), pole ()); //Přidejte bb-kód použitý ve tvaru: //Text nadpisu šesté úrovně $bbcode-> addCode ( "h6", "simple_replace", null, array("start_tag" => "
", "end_tag" => "
"), "block", array ("listitem", "block", "link"), pole ()); // Nastavení příznaků pro bb-kódy od h1 do h6, // označující, že se jedná o prvky bloku, / / což bude mít v budoucnu příznivý vliv na chytré generování html kódu. Takový prvek například nemůže // být uvnitř jiných prvků bloku $bbcode->setCodeFlag("h1", "paragraph_type", BBCODE_PARAGRAPH_BLOCK_ELEMENT); $bbcode ->setCodeFlag("h2", "paragraph_type", BBCODE_PARAGRAPH_BLOCK_ELEMENT); $bbcode->setCodeFlag("h3", "paragraph_type", BBCODE_PARAGRAPH_BLOCK_ELEMENT); $bbcode->setCodeFlag("h4", "paragraph_type", BBCODE_PARAGRAPH_BELEMENT); $BLOCK bbcode->setCodeFlag("h5", "paragraph_type", BBCODE_PARAGRAPH_BLOCK_ELEMENT); $bbcode->setCodeFlag("h6", "paragraph_type", BBCODE_PARAGRAPH_BLOCK_ELEMENT); //Přidat bb kód [b] použitý jako: //[ b]vybraný text $bbcode->addCode ("b", "simple_replace", null, pole ("start_tag" => " ", "end_tag" => ""), "inline", pole ("listitem", "block", "inline", "link"), pole ()); //Přidat bb-kód [i], použitý jako: //[i] kurzíva text $bbcode->addCode ("i", "simple_replace", null, pole ("start_tag" => " ", "end_tag" => ""), "inline", pole ("listitem", "blok", "inline", "link"), pole ()); //Přidejte bb-kód použitý ve tvaru: //http://www. needite.domain a //text odkazu $bbcode->addCode ("url", "usecontent?", "do_bbcode_url", pole ("usecontent_param" => "výchozí"), "link", pole ("listitem", " block", "inline"), pole ("link")); //Přidejte bbcode použitý jako: //http://www.needsite.domain $bbcode->addCode("link", "callback_replace_single", "do_bbcode_url ", array (), "link", array ("listitem", "block", "inline"), pole ("link")); //Přidejte bbcode použitý jako: // http://www.needsite. domain/img.jpg $bbcode->addCode("img", "usecontent", "do_bbcode_img", array(), "image", array("listitem", "block", "inline", "link"), pole ()); //Přidejte bb-kód (sense je stejný jako ), použitý ve tvaru: //http://www.needsite.domain/img. jpg $bbcode->addCode("bild", "usecontent", "do_bbcode_img", array(), "image", array("listitem", "block", "inline", "link"), array()) ; //Vytvořte skupinu obrázků z bb-kódů img a bild //pro následnou možnost nastavení //některých pravidel pro tyto skupiny $bbcode->setOccurrenceType ("img", "image"); $bbcode->setOccurrenceType("bild", "image"); //Určete, že značky ze skupiny obrázků //se nemohou v textu vyskytovat (zpracovat) již //dvakrát. V našem případě je to nutné, aby // uživatel nemohl vložit více než dva // obrázky do textu zprávy $bbcode->setMaxOccurrences ("image", 2); //Přidat bb kód $bbcode->addCode ("list", "simple_replace", null, array ("start_tag" => "
    ", "end_tag" => "
"), "list", pole ("blok", "listitem"), pole ()); // Přidejte bb-kód [*], což znamená, že tuto značku // lze použít pouze uvnitř značky // se seznamem typ (tento typ jsme přiřadili značce výše) $bbcode->addCode ("*", "simple_replace", null, array ("start_tag" => "
  • ", "end_tag" => "
  • "), "listitem", pole ("seznam"), pole ()); // Nastavte příznaky pro značky a [*] // Označte, že pro kód [*] není koncová značka // povinná , takže je možné, že bude //následující konstrukce: // //[*] Item //[*] Item // //Uzavírací značka bude přidána automaticky //v procesu generování html kódu $bbcode ->setCodeFlag ("*", "closetag", BBCODE_CLOSETAG_OPTIONAL); // Pokud tomu rozumím, tento příznak znamená, že značku [*] // lze vždy použít pouze // na začátku nového řádku $bbcode- >setCodeFlag ("*", "paragraphs", true); // je blokový prvek $bbcode->setCodeFlag("list", "paragraph_type", BBCODE_PARAGRAPH_BLOCK_ELEMENT); //Před otevřením značky //řádkový znak bude vynechán $ bbcode->setCodeFlag("list", "opentag.before.newline", BBCODE_NEWLINE_DROP ); //Před uzavírací značkou //řádkový znak bude odstraněn $bbcode->setCodeFlag("list", "closetag.before.newline" , BBCODE_NEWLINE_DROP); //Můžeme skončit pomocí seznamů v bbcode //pomocí značek list a * společně: // //[*] Prvek seznamu //[*] Prvek seznamu //[*] atd. // //Aktivace zpracování odstavců $bbcode->setRootParagraphHandling (true); // Jak tomu rozumím, takto je uvedeno // jakými znaky je nutné nahradit nalezený // zalomení řádku uvnitř odstavce // (ve skutečnosti, jak zacházet s prázdnými odstavci). $bbcode->setParagraphHandlingParameters("\n", ""); $res_text = "Testovací text [b] pro testování třídy"; //Pro jistotu odstraňte všechny zbývající //znaky zalomení řádku ve tvaru "\r", //pokud nějaké v textu zůstanou $res_text = str_replace("\r", "", $res_text); //Voila! echo $bbcode->parse($res_text);

    Doslov

    Samozřejmě jsem nedělal kompletní překlad dokumentace, ale jen to nejnutnější minimum, pro podrobnější dokumentaci se můžete obrátit na oficiální stránky (obecně je tam popsaných mnohem více různých funkcí).

    Tuto knihovnu lze také snadno implementovat do jakéhokoli php frameworku, například jsem to úspěšně udělal pro cackePHP.

    Pokud jste také narazili na podobné knihovny (správně pracující s odstavci! 🙂), bylo by zajímavé o nich vědět.

    Úvod

    Co je bbcode? BBCode je speciální varianta HTML. O tom, zda můžete nebo nemůžete použít BBCode ve svých příspěvcích, rozhoduje administrátor fóra. Kromě toho budete moci zakázat použití BBCode v konkrétní zprávě, když je zveřejněna. Samotný BBCode je podobný stylu HTML, značky jsou uzavřeny v hranatých závorkách [ a ] ​​místo< и >; poskytuje vám větší kontrolu nad tím, jak se data vydávají. S některými šablonami budete moci přidávat BBCode do svých příspěvků pomocí jednoduchého rozhraní nad polem pro zadávání textu. Ale i v takovém případě může být tato příručka užitečná.

    Formátování textu

    Jak udělat text tučným, kurzívou nebo podtrženým BBCode obsahuje značky pro rychlou změnu stylu písma, můžete to udělat následujícími způsoby:
    • Chcete-li, aby byl text tučný, uzavřete jej [b], Například:

      [b] Ahoj

      bude Ahoj

    • Pro podtržení použijte [u], Například:

      [u] Dobré ráno

      bude dobré ráno

    • Kurzíva se provádí pomocí značek [i], Například:

      Tento [i] Skvělý!

      vydá to Skvělý!

    Jak změnit barvu nebo velikost textu Ke změně barvy nebo velikosti písma lze použít následující značky (konečný vzhled bude záviset na systému a prohlížeči uživatele):
    • Barvu textu lze změnit jeho okolím . Můžete zadat buď známý název barvy (červená, modrá, žlutá atd.) nebo hexadecimální zobrazení, například #FFFFFF, #000000. Takže k vytvoření červeného textu můžete použít:

      Ahoj!

      Ahoj!

      obě metody povedou k Hello!

    • Změna velikosti se provádí podobným způsobem pomocí . Tato značka závisí na použitých šablonách, doporučený formát je číslo udávající velikost textu v procentech, od 20 % (velmi malý) do 200 % (velmi velký) výchozí velikosti. Například:

      MALÝ

      s největší pravděpodobností bude MALÝ

      zatímco:

      OBROVSKÝ!

      bude VELKÉ!

    Mohu kombinovat značky? Ano samozřejmě, že můžeš. Chcete-li například upoutat něčí pozornost, můžete napsat:

    [b] PODÍVEJ SE NA MĚ!

    co dá PODÍVEJ SE NA MĚ!

    [b][u] To není pravda

    Link building

    Odkazy na jiný web BBCode podporuje několik způsobů generování URL.
    Stejně jako u všech ostatních značek BBCode můžete adresy URL obalit jakýmikoli jinými značkami, např (viz další odstavec), [b] atd. Stejně jako u formátovacích značek je správné vnoření značek na vás, například:

    http://phpbbex.com/logo.png

    nesprávné, což může vést k následnému smazání vaší zprávy, takže buďte opatrní.

    Zobrazovat obrázky ve zprávách

    Přidání obrázku do zprávy BBCode obsahuje značku pro přidání obrázku do vašeho příspěvku. Při tom byste měli pamatovat na dvě velmi důležité věci: za prvé, mnoho uživatelů je obtěžováno velkým množstvím obrázků a za druhé, váš obrázek již musí být umístěn na internetu (tj. nemůže být umístěn pouze na vašem počítači, pokud samozřejmě, , nespustili jste na něm webový server!). V současné době není možné ukládat obrázky lokálně na phpBB (očekává se, že toto omezení bude v příští verzi phpBB zrušeno). Chcete-li zobrazit obrázek, musíte jej obklopit značkami URL. . Například:

    http://phpbbex.com/logo.png

    Jak bylo uvedeno v předchozím odstavci, obrázek můžete uzavřít do značek , to je

    http://phpbbex.com/logo.png

    Přidejte přílohy ke zprávě Přílohy lze nyní umístit kamkoli do příspěvku pomocí nové značky BBCode , pokud jsou přílohy povoleny administrátorem konference a pokud máte potřebná přístupová práva. Na stránce příspěvku je rozevírací seznam (respektive tlačítko) pro umístění příloh do příspěvku.

    Citování a zobrazování formátovaných textů

    Citace v odpovědích Text lze citovat dvěma způsoby, s odkazem a bez něj.
    • Když k odpovědi na zprávu použijete tlačítko "Citovat", její text se přidá do vstupního pole obklopeného rámečkem . Tato metoda vám umožní citovat s odkazem na autora nebo něco jiného, ​​co tam napíšete. Například citovat pasáž textu napsanou Mr. Blobby, napíšeš:

      SMS Mr. Blobby tu bude

      V důsledku toho slova „Mr. blobby napsal: Pamatuju si tě musí uzavřete název do uvozovek "", nelze je vynechat.

    • Druhá metoda vám prostě umožňuje něco citovat. Chcete-li to provést, musíte text uzavřít do značek . Zobrazení zprávy jednoduše zobrazí text v bloku nabídky.
    Výstup kódu nebo formátovaného textu Pokud potřebujete zobrazit kód nebo něco, co by mělo být zobrazeno písmem s proporcí, musíte text uzavřít do značek (u velkých textů se vypracovává jako samostatný blok) popř (pro krátké jednořádkové texty, bez samostatného bloku), například:

    echo "Toto je nějaký kód";

    Veškeré formátování použité uvnitř značek A , bude uložen. Zvýrazňování syntaxe PHP lze zapnout pomocí a doporučuje se při odesílání zpráv s kódem PHP, aby se zlepšila jeho čitelnost.

    Vytváření seznamů

    Vytvořte seznam s odrážkami BBCode podporuje dva druhy seznamů: s odrážkami a číslované. Jsou téměř totožné s jejich ekvivalenty HTML. V seznamu s odrážkami jsou všechny prvky zobrazeny postupně, každý je označen znakem značky. Chcete-li vytvořit seznam s odrážkami, použijte a definovat každý prvek pomocí [*] . Chcete-li například zobrazit své oblíbené barvy, můžete použít:


    [*] Červené
    [*] Modrý
    [*] Žlutá

    To vytvoří seznam podobný tomuto:

    • Červené
    • Modrý
    • Žlutá
    Vytvořte číslovaný seznam Druhý typ seznamu, číslovaný, umožňuje zvolit, co přesně se bude před každým prvkem zobrazovat. Chcete-li vytvořit číslovaný seznam, použijte nebo k vytvoření abecedního seznamu. Stejně jako v případě seznamu s odrážkami jsou prvky definovány pomocí [*] . Například:


    [*] Jděte do obchodu
    [*] Kupte si nový počítač
    [*]

    vyrobí následující:

    1. Jděte do obchodu
    2. Kupte si nový počítač
    3. Když dojde k chybě, nakažte počítač
    Pro abecední seznam použijte:


    [*] První možná odpověď
    [*] Druhá možná odpověď
    [*] Třetí možná odpověď

    co dá

    1. První možná odpověď
    2. Druhá možná odpověď
    3. Třetí možná odpověď