Ang mga naka-istilong tao faq php mode bbcode. Ang isang memo sa paggamit ng mga code ng BB (bbCode). Form ng mga talata at lugar


Ano ang bbcode?   Ang BBCode ay isang espesyal na variant ng HTML. Maaari mong gamitin ang BBCode sa iyong mga post o hindi natutukoy ng tagapangasiwa ng lupon. Bilang karagdagan, maaari mong paganahin ang paggamit ng BBCode sa isang tiyak na mensahe kapag nai-post ito. Ang BBCode mismo ay katulad sa estilo sa HTML, ang mga tag ay nakapaloob sa mga parisukat na bracket [at], hindi< и >; Nagbibigay ito ng higit na kontrol sa kung paano ipinapakita ang data. Kapag gumagamit ng ilang mga template, maaari kang magdagdag ng BBCode sa iyong mga mensahe gamit ang simpleng interface na matatagpuan sa itaas ng patlang ng pag-input ng teksto. Ngunit kahit na pagkatapos, ang gabay na ito ay maaaring maging kapaki-pakinabang.

Pag-format ng teksto

Paano gawing matapang, pahilig, o may salungguhit ang teksto   Kasama sa BBCode ang mga tag para sa mabilis na pagbabago ng istilo ng font, magagawa mo ito sa mga sumusunod na paraan:
  • Upang maisakatuparan ang teksto, isama ito [b]halimbawa:

    [b]Kumusta

    ay magiging Kumusta

  • Upang salungguhitan ang paggamit [u]halimbawa:

    [u]Magandang umaga

    magiging magandang umaga

  • Tapos na ang mga Italya sa mga tag. [i]halimbawa:

    Ito ay [i]mahusay!

    ibibigay ito mahusay!

Paano baguhin ang kulay o laki ng teksto   Ang mga sumusunod na tag ay maaaring magamit upang baguhin ang kulay o laki ng font (ang pangwakas na hitsura ay nakasalalay sa system at browser ng gumagamit):
  • Maaari mong baguhin ang kulay ng teksto sa pamamagitan ng nakapaligid dito. . Maaari mong tukuyin ang alinman sa isang kilalang pangalan ng kulay (pula, asul, dilaw, atbp.), O isang hexadecimal na representasyon, halimbawa #FFFFFF, # 000000. Kaya, upang lumikha ng pulang teksto maaari mong gamitin:

    Kumusta

    Kumusta

    ang parehong paraan ay magreresulta sa Kamusta!

  • Nakamit ang pagbabago ng laki sa katulad na paraan kapag ginagamit . Ang tag na ito ay nakasalalay sa mga template na ginamit, ang inirekumendang format ay isang numero na nagpapakita ng laki ng teksto bilang isang porsyento, mula sa 20% (napakaliit) hanggang 200% (napakalaking) ng default na laki. Halimbawa:

    LITTLE

    malamang na magiging LITTLE

    habang:

    LABAN!

    magiging GUSTO!

Maaari ba akong pagsamahin ang mga tag?   Oo, siyempre maaari mong. Halimbawa, upang maakit ang pansin ng isang tao, maaari kang sumulat:

[b]MAKITA SA AKIN!

kung ano ang magbibigay MAKITA SA AKIN!

[b] [u]Mali ito

Ang pagsipi at pagpapakita ng mga naka-format na teksto

Sinipi ang mga sagot   Mayroong dalawang mga paraan upang quote ang teksto, may o walang link.
  • Kapag ginamit mo ang pindutan ng Quote upang tumugon sa isang mensahe, ang teksto nito ay idinagdag sa larangan ng pag-input sa isang nakapaligid na bloke . Ang pamamaraan na ito ay magbibigay-daan sa iyo na quote na may sanggunian sa may-akda o sa ibang bagay na isinulat mo doon. Halimbawa, upang magbanggit ng isang sipi na isinulat ni Mr. Blobby, magsusulat ka:

    Text Mr. Malapit na rito ang Blobby

    Bilang resulta, ang mga salitang "Mr. Sumulat si Blobby: ". Ingat ka dapat  isama ang pangalan sa mga marka ng panipi "", hindi nila maialis.

  • Pinapayagan ka lamang ng pangalawang pamamaraan na magbanggit ng isang bagay. Upang gawin ito, kailangan mong i-enclose ang teksto sa mga tag . Kapag nanonood ng isang mensahe, ang teksto sa citation block ay ipapakita lamang.
Code o na-format na output ng teksto   Kung kailangan mong mag-output ng isang piraso ng programa o isang bagay na dapat ipakita sa isang nakapirming lapad na font (Courier), dapat mong isama ang teksto sa mga tag halimbawa:

echo "Ito ang ilang code";

Lahat ng pag-format na ginamit sa loob ng mga tag ay mai-save. Ang pag-highlight ng syntax ng PHP ay maaaring paganahin gamit   at inirerekumenda kapag nagpapadala ng mga mensahe na may code ng PHP upang mapagbuti ang pagiging madaling mabasa.

Lumikha ng Mga Listahan

Lumikha ng isang bullet list   Sinusuportahan ng BBCode ang dalawang uri ng mga listahan: bullet at bilang. Halos magkapareho sila sa kanilang mga katumbas ng HTML. Sa isang bullet list, lahat ng mga elemento ay ipinapakita nang sunud-sunod, bawat isa ay minarkahan ng isang simbolo ng marker. Upang lumikha ng isang bullet list, gamitin   at tukuyin ang bawat elemento na may [*] . Halimbawa, upang ipakita ang iyong mga paboritong kulay, maaari mong gamitin ang:


[*] Pula
[*] Asul
[*] Dilaw

Ito ay makagawa ng isang listahan na tulad nito:

  • Pula
  • Asul
  • Dilaw
Lumikha ng isang numero ng listahan   Ang pangalawang uri ng listahan, bilang, ay nagbibigay-daan sa iyo upang piliin kung ano ang eksaktong ipapakita bago ang bawat elemento. Upang lumikha ng isang bilang na listahan, gamitin   o   upang lumikha ng isang alpabetikong listahan. Tulad ng isang bullet list, ang mga item ay tinukoy gamit [*] . Halimbawa:


[*] Pumunta sa tindahan
[*] Bumili ng isang bagong computer
[*]

gagawa ng mga sumusunod:

  1. Pumunta sa tindahan
  2. Bumili ng isang bagong computer
  3. Pag-scam sa isang computer kapag nangyari ang isang error
Para sa isang alpabetikong listahan, gamitin ang:


[*] Paunang sagot
[*] Pangalawang posibleng sagot
[*] Pangatlong posibleng sagot

kung ano ang magbibigay

  1. Paunang sagot
  2. Pangalawang posibleng sagot
  3. Pangatlong posibleng sagot

Link Building

Mga link sa ibang site   Sinusuportahan ng BBCode ang ilang mga paraan upang lumikha ng mga URL.
  • Ang una ay gumagamit ng isang tag , pagkatapos ng \u003d sign, dapat na pumunta ang nais na URL. Halimbawa, para sa isang link sa phpBB.com maaari mong gamitin:

    Bisitahin ang phpBB!

  • Kung nais mong lumitaw ang URL mismo bilang link ng teksto, magagawa mo lamang ang sumusunod:

    http://www.phpbb.com/

  • Bilang karagdagan, sinusuportahan ng phpBB ang isang tampok na tinatawag Mga awtomatikong link, isasalin nito ang anumang syntactically tama na URL sa link nang hindi nangangailangan ng mga tag at kahit na ang prefix ng http: //. Halimbawa, ang pagpasok sa www.phpbb.com sa iyong mensahe ay awtomatikong babalik ang www.phpbb.com kapag tinitingnan ang mensahe.
  • Ang parehong naaangkop sa mga email address, maaari mo ring tukuyin ang malinaw na address:

    [email protected]

    na mag-isyu ng [email protected], o simpleng ipasok ang [email protected] sa iyong mensahe, at ito ay awtomatikong mapapalitan kapag tiningnan.

Tulad ng lahat ng iba pang mga tag ng BBCode, maaari mong isama ang anumang iba pang mga tag sa URL, halimbawa   (tingnan ang susunod na talata) [b]  atbp Tulad ng pag-format ng mga tag, ang tamang pugad ng mga tag ay nasa iyo, halimbawa:

http://www.google.com/intl/en_ALL/images/logo.gif

hindi tama, na maaaring humantong sa kasunod na pagtanggal ng iyong mensahe, kaya mag-ingat.

Panimula

bbCode - Bulletin Board Code, o wikang markup na ginamit upang mag-format ng mga mensahe sa maraming electronic bulletin board (BBS) at mga forum. Upang mai-format ang teksto, ginagamit ang mga tag tulad ng mga HTML tag. Hindi tulad ng mga HTML tag, ang mga bbCode tags ay nakapaloob sa mga square bracket. Bago ipakita ang pahina, ipinapalagay ng makina ng forum ang teksto at na-convert ang bbCode sa HTML code.

Sa maraming mga forum, ang kakayahang gumamit ng mga code ng BB ay isinaayos nang isa-isa ng administrator para sa bawat seksyon ng forum. Samakatuwid, bago gamitin ang mga code ng BB sa mga mensahe, dapat mong tiyakin na pinapayagan silang.

Pag-format ng font

Mga pangunahing tag para sa pagtatrabaho sa teksto:

[p] Normal na talata sa indent.

Isang talata na maaari mong istilo.
* Pagkatapos nito, ang "style" ay isang analogue ng estilo sa HTML.
   ang teksto ay katulad sa HTML

ang teksto


** Sa mga tag [p] maaari kang gumamit ng iba pang mga tag, tulad ng [b], [i], [s], atbp.

Teksto na maaari mong magamit sa mga katangian ng estilo.

Ang isang limitadong lugar na maaaring magamit upang baguhin ang mga katangian ng isang estilo (posisyon, hangganan, indisyon, mga katangian ng nilalaman, atbp.).
* Bilang default, hindi nakikita ang mga hangganan ng lugar. Ang isang pahina ay maaaring magkaroon ng maraming mga lugar nang sabay-sabay.

Pag-format ng teksto:

[b] Mahalagang teksto, matapang

[i] Mahalagang teksto, italiko

Matapang lang

Italics lang

[u] May salungguhit na teksto

[s] Tekstong Strikethrough - katulad ng pagkakaiba-iba

Mas maliit na font

Isang tanda sa talababa sa itaas o isang indeks sa ibaba ng teksto

Tinanggal ang teksto

Laki ng font:

13 point font

15 point font

9px font

12px font

15px font

Laki 0

Laki +1

Laki +2

Posibleng posible ang mga pagpipilian sa laki ng font (visual assessment).

Mga header:

Antas ng 1 heading

Antas ng 2 heading

Antas ng 3 heading

Ika-4 na antas ng heading

Antas 5 Heading

Antas 6 heading

Paggawa ng teksto gamit ang mga font:

Font Comic Sans Ms

Font Monotype Corsiva

Font Tahoma

Posibleng posible ang mga pagpipilian sa uri ng font (mga pangalan at visual rating).

Gumagawa ng teksto na may kulay:

Pulang teksto
* Maaari mong gamitin ang karaniwang mga pamagat na pandekorasyon ng mga kulay: Pula, Green, Blue, atbp.

Blue text
* Ang bilang # 0000ff ay nangangahulugang asul sa palad ng RGB.

Asul na background
* Ang background ay maaari ring baguhin ang kulay.

Asul na teksto, kulay-abo na background.

Ang ilang mga paunang natukoy na mga kulay:

Itim na Puting Pulang pula na berde na Lila na Pula ng Firewick Maroon OrangeRed MidnightBlue CornflowerBlue
Cyan Yellow Magenta DarkGreen DarkGoldenrod Gintong Orchid BlueViolet Burlywood PeachPuff

Ang ilang mga kulay sa hexadecimal code ay ang intensities ng pula, berde, at asul (RR GG BB):

# 000000 #FFFFFF # FF0000 # 00FF00 # 0000FF # FF00FF # FF4444 # FF9999 #FFCCCC # 9999FF # FF99FF #DDDDDD # FFE4C4 # UDP99 # FF8DC # FA8072 # 990000 # FF3030 # 000080 # 0000EE # 000080 # DAA520 # FFCC33 # FFA500 # C71585 # 8B008B # CC33FF

Posibleng mga pagpipilian para sa paleta ng kulay at ang kanilang mga code / pangalan ay magagamit.

Pag-align ng teksto at pag-format ng talata

Pagkahanay ng teksto:

I-align ang teksto sa kaliwa

Kaliwa Alignment na may Estilo

Iniwan ng talata ang pagkakahanay

Pag-align ng teksto sa sentro

Alignment ng Center na may Estilo

Pagkahanay sa sentro sa isang talata

I-align ang teksto sa kanang bahagi

Ihanay nang tama sa istilo

Pag-align sa talata sa kanan

I-align ang teksto sa magkabilang panig

Ihanay sa magkabilang panig na may istilo

Pag-align ng talata sa magkabilang panig
* Ang pag-align ng teksto sa magkabilang panig ay ipinapakita para sa mga teksto na mas mahaba kaysa sa isang linya.

Mga talababa (komento) na may talento ng talata:

[q] Sumulat sa linya

Quote sa linya kasama ang mga katangian


  Ang teksto na sinipi sa isang hiwalay na bloke, na magkakaroon
  isang maliit na indent sa kaliwa at isang espesyal na disenyo (istilo ng forum).

Mga halimbawa:
  Lorem ipsum dolor umupo
  Lorem ipsum dolor umupo
  Lorem ipsum dolor umupo

Pag-format ng mga parapo at lugar:

Kumusta Sa talatang ito, ang unang pangungusap ay mula sa pulang linya, i.e. nagagalit Tulad na lamang sa isang imprenta. Totoo, sa Internet ito ay isang bihirang kasanayan. Ang mga talata ay dapat na paghiwalayin ng isang walang laman na puwang.

  Pinapanatili ng preformatted na teksto ang indisyon sa kaliwa at sa pagitan ng mga salita at nagtatakda ng indentasyong iyong tinukoy sa mga puwang. Babala! Ang tag ay hindi awtomatikong ginagawa ang mga linya ng pagkasira!

Mga listahan ng pag-format

Gumamit ng isang tag o para sa mga bullet list:

  • Isa sa listahan ng mga item
  • Isa pang tulad ng item
  • Isa pang punto.



[*] Isa pang tulad ng item
[*] Isa pang item.

Para sa mga bilang na listahan, gamitin ang tag:

  1. Isa sa listahan ng mga item
  2. Isa pang tulad ng item
  3. Isa pang punto.


[*] Isa sa mga item sa listahan
[*] Isa pang tulad ng item
[*] Isa pang item.

Opsyonal ang pagsasara ng tag para sa paggamit:

  • Isa sa listahan ng mga item
  • Isa pang tulad ng item
  • Isa pang punto.


[*] Isa sa mga item sa listahan
[*] Isa pang tulad ng item
[*] Isa pang item.

Ang direktang indikasyon ng view ng listahan ay posible rin:
   - bilang na listahan
   - listahan ng alpabetong
   - isang listahan na binibilang sa mga numerong Romano

Mga larawan

Http://img.cx/img/primer.jpg - isang halimbawa ng pagsingit ng isang larawan.

Http://img.cx/img/primer.jpg - larawan sa kaliwa.

Http://img.cx/img/primer.jpg - larawan sa kanan.
* Ang code na ito ay katulad sa HTML code:

Http://img.cx/img/primer.jpg - isang larawan sa gitna.
* Ang code na ito ay katulad sa HTML code:

Katulad na mga tag na may mga pangalan at tooltip:

Mahalaga! Hindi ka maaaring gumamit ng mga marka ng panipi sa pangalan ng larawan!

Http://img.cx/img/primer.jpg - isang halimbawa ng pagsingit ng isang larawan.

Http://img.cx/img/primer.jpg - larawan sa kaliwa.

Http://img.cx/img/primer.jpg - larawan sa kanan.

Http://img.cx/img/primer.jpg - isang larawan sa gitna.

Mga larawan na may tinukoy na laki:

Http://img.cx/img/primer.jpg - isang halimbawa ng isang larawan na may sukat.
* Ang code na ito ay katulad sa HTML code:

Http://img.cx/img/primer.jpg - larawan sa kaliwa, na may sukat.

Http://img.cx/img/primer.jpg - larawan sa kanan, na may sukat.

Ipasok ang malalaking mga imahe na may scroll bar:

Http: //www..jpg - isang larawan sa napiling lugar, kung ito ay mas malaki kaysa sa magagamit na laki ng pagpapakita sa forum.

Address - buksan ang imahe sa isang bagong window.
* Ang code na ito ay katulad sa HTML code:

Address - buksan ang imahe sa parehong window.
* Ang code na ito ay katulad sa HTML code:

Pana-panahong kailangan kong gamitin ang "tagapagsalin" ng BBCode sa aking mga proyekto (nakasulat sa PHP), at palaging walang oras upang maghanap ng ilang higit pa o mas kaunting natutunaw na solusyon, na sa huli ay nagreresulta sa paggamit o paglikha ng "mga saklay" para sa bawat tiyak na kaso.
  Ngunit ngayon, tila, ito ay upang malaman kung ano ang gusto ko.

Ang aking reklamo tungkol sa mga nakahanda na solusyon ay kadalasang pangunahin sa kawalan ng kakayahan ng mga aklatang ito upang maayos na maproseso ang mga parapo. Sa katunayan, karaniwang hindi sila gumagamit ng mga talata (tag P), sa halip, bilang isang resulta ng kanilang trabaho, nagpasok lamang sila ng isang tag
pagpapalit ng karaniwang mga character break line. Isinasaalang-alang ko ang pamamaraang ito ng pagtulad ng talata sa 98 porsyento, upang ilagay ito nang banayad, hindi angkop. Ngunit dahil ang linya ng pambalot ay nasa loob ng paraan
  mas madaling ipatupad sa halip na "tao"

, tulad ng ginagawa ng karamihan sa kanila 🙁 Ang ilan ay may mga dahilan na sinasabi nila na ang br ay mas tama, na bahagyang dahil sa katamaran ng mga nag-develop ng iba't ibang mga yari na aklatan, naisip ng ibang bahagi ng mga tao na ang tag P  ay lipas na (pagkatapos ng lahat, kahit na sa maraming mga natapos na produkto at site, ang mga talata ay nabuo sa pamamagitan ng paggamit
) 🙂

Magsimula tayo

Ngunit tila may ilaw sa dulo ng lagusan. Ito ay isang yari na klase para sa pagtatrabaho sa BBCode, na, tila, ay isang mahusay na trabaho (wala pa akong nakita na mas mahusay). Ang negatibo lamang ay ang dokumentasyon na ipinakita sa site ay hindi sa Russian. Nais ko ring pagtagumpayan ang minus na ito sa artikulong ito, na nagbibigay ng isang halimbawa ng paggamit ng klase ng mga komento ng Ruso.

Una kailangan mong mag-download ng aklatan (sa oras ng pagsulat, ang bersyon ng aklatan ay 0.3.3). Sa na-download na archive sa folder ng src, makakahanap ka ng dalawang file na kailangan namin: stringparser.class.php at stringparser_bbcode.class.php.

Halimbawa, ipagpalagay na mayroon kaming isang walang laman na file na index.php at sa tabi nito ay gagawa kami ng isang folder / bbcode / naglalaman ng dalawang mga file na nabanggit sa itaas.
  Halimbawa, ang pinakamababang nilalaman ng file na "index.php" ay dapat na katulad nito (sa pamamagitan ng pagpapatakbo ng halimbawang ito, makikita mo kaagad kung gumagana ang library):

< ?php //Вставляем файл библиотеки require_once "bbcode/stringparser_bbcode.class.php"; //Создаем объект класса StringParser_BBCode $bbcode = new StringParser_BBCode (); //Добавляем объекту класса понятие о тэге [b] //(в итоге только этот тэг и будет //обрабатываться этим классом) $bbcode->addCode ("b", "simple_replace", , array ("start_tag" \u003d\u003e " "," end_tag \u200b\u200b"\u003d\u003e"")," inline ", array (" block "," inline "), array ()); // Iproseso ang string string at output ito sa browser echo $ bbcode-\u003e parse (" Pagsubok ng teksto, ang salitang ito ay dapat na [b ] matapang ");?\u003e

Pag-andar ng AddCode

Marahil ang addCode function ng isang bagay ng klase ng StringParser_BBCode ay maaaring maging sanhi ng pinakamalaking interes sa code na ito, narito ang prototype at isang listahan ng mga paglalarawan ng parameter:

Walang bisa addCode (string $ code, string $ type, string $ callback, string $ params, string $ content_type, array $ allow_in, array $ not_allowed_in);

Ang pag-andar na ito ay nagdaragdag ng konsepto ng ilang mga code (bb code) para sa isang bagay ng klase upang sa kalaunan ay tuklasin ang mga code na ito sa teksto at iproseso nang naaayon. I.e. masasabi natin na sa una ay ang object ng klase ng StringParser_BBCode ay walang alam tungkol sa karaniwang mga code ng bb at hindi magagawang iproseso ang mga ito sa anumang paraan. Samakatuwid, pagkatapos ng bawat pagsisimula, ang bagay na ito ay kailangang "sanay" sa lahat ng mga lahi ng mga code ng bb.

$ code (halimbawa, nangangahulugang 'b') Ang code na hahanapin sa teksto para sa pagproseso. I.e. kung tinukoy mo ang test code, pagkatapos ay hahanapin ang tag sa naproseso na teksto at naproseso alinsunod sa mga tagubilin sa iba pang mga parameter ng pag-andar na pinag-uusapan. Uri ng $ (halimbawa, itinakda ang 'simple_replace') Tinukoy kung paano dapat maiproseso ang tag (kung anong uri ito). Mayroong iba't ibang mga paunang natukoy na mga uri ng tag na ilalarawan sa ibaba. Sa aming halimbawa, ang uri ng 'simple_replace' ay tinukoy, na nagpapahiwatig na ang tag ay ipares: $ callback (sa halimbawa nito ay null) Hinahayaan mong tukuyin ang pangalan ng function na tatawagin kapag pinoproseso ang nahanap na tag sa teksto. Sa kaso ng uri ng tag na 'simple_replace', ang naturang pag-andar ay hindi tinawag, at, nang naaayon, ang null ay maaaring matukoy sa parameter na ito. $ params (sa halimbawa, array ('start_tag' \u003d\u003e ' ',' End_tag \u200b\u200b'\u003d\u003e'')) Ang pangunahing parameter na ito ay nagpapahiwatig kung aling mga tag na html ang dapat ipasok sa halip na bb tag. Ang pangalan ng mga parameter nang direkta ay nakasalalay sa kung anong uri ng tag na tinukoy namin sa parameter ng $ type. $ content_type (sa halimbawa, 'inline') Ang uri ng panloob na nilalaman ng tag. Maaari nitong kunin ang mga halaga: 'inline', 'block', 'link', 'image'. Kung hindi ako nagkakamali, maaari mo ring irehistro ang iyong mga uri upang maaari mong tukuyin ang iyong sariling mga filter para sa nilalamang ito (tingnan ang halimbawa ng paggamit ng mga filter sa ibaba). $ allow_in (sa halimbawa, ang halaga ay array ('block', 'inline')) Sa parameter na ito maaari mong tukuyin kung aling mga uri ng mga bagay na maaaring makuha ang code ng bb (sa pagproseso nito ay hindi papansinin kung hindi man). Sa aming halimbawa, ipinahiwatig namin na ang isang elemento ay maaaring pareho sa loob ng mga elemento ng bloke at sa loob ng mga gulong elemento. $ not_allowed_in (sa halimbawa, mahalaga () na mahalaga) May isang layunin na kabaligtaran sa kahulugan sa nakaraang parameter.

Mga uri ng pagproseso ng tag

Paglalarawan ng mga pagpipilian para sa halaga ng $ type na parameter sa function ng addCode.

Inilarawan ng 'Simple_replace' ang isang simpleng tag ng pares. Kapag ginagamit ang ganitong uri ng pagproseso ng tag, ang parameter ng function ng парамет params ay dapat maglaman ng dalawang mga cell: $ params ['start_tag'] at $ params ['end_tag']. Ang 'Start_tag' ay dapat maglaman ng isang analogue ng pagbubukas ng tag sa HTML, at 'end_tag' - ang pagsasara ng tag, ayon sa pagkakabanggit. 'Simple_replace_single' Ang parehong bilang 'simple_replace', ngunit ginagamit lamang para sa mga solong tag na, sa katunayan, ay walang nilalaman (tulad ng br, hr, atbp.). Nangangailangan lamang ng parameter na $ params ['start_tag']. 'Callback_replace' Sa ganitong uri, inilipat mo ang pagproseso para sa mga tugma na natagpuan (gamit ang function ng callback) para sa ipinares na tag. 'Callback_replace_single' Pareho ng 'callback_replace', ngunit para lamang sa mga solong tag. Ang 'Usecontent' Pareho bilang 'callback_replace', tanging sa mga nilalaman ng nasabing tag ibang mga tag ay hindi maproseso, halimbawa, ito ay maginhawa para sa code ng tag. 'Usecontent?' Ang ganitong uri ay maaaring kumilos tulad ng 'usecontent' o tulad ng 'callback_replace' depende sa sitwasyon. Ang kaugnayan ng isang partikular na pagpipilian ay natutukoy sa pamamagitan ng pagkakaroon ng isang pre-tinantyang katangian sa bb tag. Kung ang katangian ay natagpuan, pagkatapos ang pagproseso ng 'callback_replace' ay gagamitin, kung hindi man ay iproseso ang tag bilang 'usecontent'. Ang pangalan ng katangian para sa paghahanap ay tinukoy sa pamamagitan ng parameter ng $ params ['usecontent_param']. Kung tinukoy ang default, kung gayon ang halaga ng katangian ay itinalaga nang direkta sa tag, halimbawa, ang halaga ng default na katangian ay ang teksto na "http: // link". Ang pamamaraan na ito ay madalas na ginagamit, halimbawa, para sa isang tag. Ang tag na ito ay maaaring magamit sa dalawang anyo: http://www.example.com/ at Link text, pati na rin ang [b] bold na teksto. Sa unang kaso, ang uri ng 'usecontent' ay gagamitin, sapagkat ang link ng teksto ay dapat ipakita nang walang anumang pag-format (at, sa katunayan, ang link mismo ay hindi tama kung naglalaman ito ng mga extrusion na character). Sa ibang kaso, ang uri ng 'callback_replace' ay dapat gamitin, dahil ang link mismo ay naipasa bilang isang hiwalay na parameter, at ang teksto na naka-frame sa link ay maaaring naglalaman ng ilang uri ng pag-format.
Tandaan: Maaari mong tukuyin ang ilang mga parameter para sa kanilang paghahanap, kung saan sa $ params ['usecontent_param'] kailangan mong pumasa hindi isang string, ngunit isang hanay na naglalaman ng mga string. Halimbawa: $ bbcode-\u003e addCode (..., array ('usecontent_param' \u003d\u003e array ('parameter1', 'parameter2')), ...); 'Callback_replace?' Ang kabaligtaran ng 'usecontent?'. Kung ang isa sa mga katangiang tinukoy sa usecontent_param ay nangyayari sa tag, maproseso ito bilang 'usecontent', kung hindi man bilang 'callback_replace'.

Halimbawang code mula sa mga kondisyon na "labanan"

Narito ang isang halimbawa index.php file na may isang mas advanced na pagsasaayos ng klase para sa pagproseso ng isang mas malaking bilang ng mga tag, posible din na maunawaan kung paano gumagana ang mga function ng callback, atbp.

< ?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." ";) // Function para sa pagpasok ng function ng mga imahe do_bbcode_img (aksyon ng $, mga katangian ng $, nilalaman ng $, $ params, $ node_object) (// Bahagi ng pagpapaandar na // ay nagpapatunay lamang sa data ng tag kung ($ aksyon \u003d\u003d "patunayan") (kung (substr ($ nilalaman, 0, 5) \u003d\u003d "data:" || substr ($ nilalaman, 0, 5) \u003d\u003d "file:" || substr ($ nilalaman, 0 , 11) \u003d\u003d "javascript:" || substr ($ content, 0, 4) \u003d\u003d "jar:") (bumalik na mali;) bumalik totoo;) // Direkta na mai-convert ang tag sa // na pagpipilian ng html sa pagbabalik ng resulta " ";) // Lumikha ng isang object ng klase ng StringParser_BBCode $ bbcode \u003d bagong StringParser_BBCode (); // Magdagdag ng isang filter (para sa higit pang mga detalye makita ang dokumentasyon), // gamit ang aming function convertlinebreaks, na // mag-convert ng mga feed ng linya sa teksto sa isang solong $ bbcode -\u003e addFilter (STRINGPARSER_FILTER_PRE, "convertlinebreaks"); // Idagdag ang aming mga parser para sa iba't ibang uri ng mga bagay na // (para sa higit pang mga detalye tingnan ang dokumentasyon) // Ipinapahiwatig namin kung saan gumagana ang // ang mga nilalaman ng mga tag na ito ay dapat pumunta, halimbawa, sa pamamagitan ng isang function // htmlspecialchars upang maiwasan ang XSS, atbp. $ bbcode-\u003e addParser (array ("block", "inline", "link", "listitem"), "htmlspecialchars"); $ bbcode-\u003e addParser (array (" harangan "," inline "," link ", "listitem"), "nl2br"); $ bbcode-\u003e addParser ("list", "bbcode_stripcontents"); // Idagdag ang bb code na ginamit bilang: // Ang teksto ng unang antas ng header $ bbcode-\u003e addCode ("h1 "," simple_replace ", , array (" start_tag "\u003d\u003e"

"," end_tag \u200b\u200b"\u003d\u003e"

")," block ", array (" listitem "," block "," link "), array ()); // Idagdag ang bb code na ginamit sa form: // Second level header text $ bbcode-\u003e addCode ( "h2", "simple_replace", , array ("start_tag" \u003d\u003e "

"," end_tag \u200b\u200b"\u003d\u003e"

")," block ", array (" listitem "," block "," link "), array ()); // Idagdag ang bb code na ginamit sa form: // Pangatlong antas ng header text $ bbcode-\u003e addCode ( "h3", "simple_replace", , array ("start_tag" \u003d\u003e "

"," end_tag \u200b\u200b"\u003d\u003e"

")," block ", array (" listitem "," block "," link "), array ()); // Idagdag ang bb code na ginamit sa form: // Ang teksto ng pang-apat na antas ng header $ bbcode-\u003e addCode ( "h4", "simple_replace", , array ("start_tag" \u003d\u003e "

"," end_tag \u200b\u200b"\u003d\u003e"

")," block ", array (" listitem "," block "," link "), array ()); // Idagdag ang bb code na ginamit sa form: // Ang teksto ng ikalimang antas ng header $ bbcode-\u003e addCode ( "h5", "simple_replace", , array ("start_tag" \u003d\u003e "
"," end_tag \u200b\u200b"\u003d\u003e"
")," block ", array (" listitem "," block "," link "), array ()); // Idagdag ang bb code na ginamit bilang: // Ang teksto ng pang-anim na antas ng header $ bbcode-\u003e addCode ( "h6", "simple_replace", , array ("start_tag" \u003d\u003e "
"," end_tag \u200b\u200b"\u003d\u003e"
")," block ", array (" listitem "," block "," link "), array ()); // Itakda ang mga flag para sa mga code ng bb mula h1 hanggang h6, // na nagpapahiwatig na sila ay mga elemento ng bloke. // na higit na makikinabang sa matalinong // henerasyon ng code ng html. Ang nasabing sangkap, halimbawa, ay hindi maaaring maging sa loob ng iba pang mga elemento ng block $ bbcode-\u003e setCodeFlag ("h1", "paragraph_type", BBCODE_PARAGRAPH_BLOCK_ELEMENT); $ bbcode -\u003e setCodeFlag ("h2", "paragraph_type", BBCODE_PARAGRAPH_BLOCK_ELEMENT); $ bbcode-\u003e setCodeFlag ("h3", "paragraph_type", BBCODE_PARAGRAPH_BLOCK_ELEMENT); $ bbcode-\u003e setCodeBlag_B__B__B__B__B__B__B__B__BL_BL_BL_BL_BL_BL_B__BL bbcode-\u003e setCodeFlag ("h5", "paragraph_type", BBCODE_PARAGRAPH_BLOCK_ELEMENT); $ bbcode-\u003e setCodeFlag ("h6", "paragraph_type", BBCODE_PARAGRAPH_BLOCK_ELEMENT); // Magdagdag ng bb- od [b], ay ginagamit sa anyo: // [b] piniling teksto $ bbcode-\u003e addCode ( "b", "simple_replace", , array ( "START_TAG" \u003d\u003e " "," end_tag \u200b\u200b"\u003d\u003e"")," inline ", array (" listitem "," block "," inline "," link "), array ()); // Idagdag ang bb code [i] na ginamit sa form: // [i] pahilig na teksto $ bbcode-\u003e addCode ("i", "simple_replace", , array ("start_tag" \u003d\u003e " "," end_tag \u200b\u200b"\u003d\u003e"")," inline ", array (" listitem "," block "," inline "," link "), array ()); // Idagdag ang bb code na ginamit sa form: // http: // www. needsite.domain at // Link text $ bbcode-\u003e addCode ("url", "usecontent?", "do_bbcode_url", array ("usecontent_param" \u003d\u003e "default"), "link", array ("listitem", " harangan "," inline "), array (" link ")); // Idagdag ang bb code na ginamit sa form: //http://www.needsite.domain $ bbcode-\u003e addCode (" link "," callback_replace_single "," do_bbcode_url ", array ()," link ", array (" listitem "," block "," inline "), array (" link ")); // Idagdag ang bb code na ginamit sa form: // http: //www.needsite.domain/img.jpg $ bbcode-\u003e addCode ("img", "usecontent", "do_bbcode_img", array (), "image", array ("listitem", "block", " inline "," link "), array ()); // Idagdag ang bb-code (sa kahulugan ng pareho, // as) na ginamit sa form: //http://www.needsite. domain / img.jpg $ bbcode-\u003e addCode ("bildo", "usecontent", "do_bbcode_img", array (), "imahe", array ("listitem", "block", "inline", "link"), array ()); // Lumikha ng isang pangkat ng imahe mula sa mga code ng bb img at bilding // para sa kasunod na posibilidad ng pagtatakda ng // ilang mga patakaran para sa mga pangkat na ito $ bbcode-\u003e setOccurrenceType ("img", "image"); $ bbcode-\u003e setOccurrenceType ("bildo", "imahe"); // Ipinapahiwatig namin na ang mga tag mula sa imahe // pangkat ay maaaring mangyari (maiproseso) sa teksto nang hindi hihigit sa // dalawang beses. Sa aming kaso, kinakailangan ito upang ang gumagamit // ay hindi maaaring magpasok ng higit sa dalawang // larawan sa text message $ bbcode-\u003e setMaxOccurrences ("imahe", 2); // Idagdag ang bb code $ bbcode-\u003e addCode ("listahan", "simple_replace", , array ("start_tag" \u003d\u003e "
    "," end_tag \u200b\u200b"\u003d\u003e"
")," lista ", array (" block "," listitem "), array ()); // Idagdag ang bb code [*], na nagpapahiwatig na ang tag na ito ay // magagamit lamang sa loob ng tag // na may listahan ng uri (itinalaga namin ang ganitong uri sa tag sa itaas) $ bbcode-\u003e addCode ("*", "simple_replace", , array ("start_tag" \u003d\u003e "
  • "," end_tag \u200b\u200b"\u003d\u003e"
  • ")," listitem ", array (" list "), array ()); // Itakda ang mga flag para sa mga tag at [*] // Ipahiwatig na para sa code [*] ang pagsasara ng tag // ay opsyonal, sa gayon, posible magkakaroon ng // ang sumusunod na konstruksyon: // // [*] Item // [*] Item // // Ang pagsasara ng tag ay idadagdag awtomatikong // sa proseso ng pagbuo ng html code $ bbcode-\u003e setCodeFlag ("*", "closetag", BBCODE_CLOSETAG_OPTIONAL); // Sa pagkakaintindihan ko, ang watawat na ito ay nangangahulugang ang tag [*] // ay palaging magagamit lamang sa // sa simula ng isang bagong linya $ bbcode-\u003e setCodeFlag ("*", "talata", totoo); // ay isang elemento ng bloke ng $ bbcode-\u003e setCodeFlag ("lista", "paragraph_type", BBCODE_PARAGRAPH_BLOCK_ELEMENT); // Bago ang pagbubukas ng tag // ang linya ng linya ay aalisin $ bbcode-\u003e setCodeFlag ("lista", "opentag.before.newline", BBCODE_NEWLINE_DROP); // Bago ang pagsasara ng tag // ang character na linya ay aalisin $ bbcode-\u003e setCodeFlag ("lista", "closetag .before.newline ", BBCODE_NEWLINE_DROP); // Bilang isang resulta, maaari kaming gumamit ng mga listahan sa bb code, // gamit ang listahan at * tag na magkasama: // // [*] Listahan ng elemento // [*] Listahan ng sangkap na // *] atbp. // // I-aktibo ang pagproseso ng talata $ bbcode-\u003e setRootParengganHandling (totoo); // Tulad ng pagkakaintindihan ko, ipinapahiwatig nito kung anong mga character na nais mong palitan ang nakatagong linya ng break sa loob ng isang parapo // (sa diwa, kung paano mahawakan ang mga walang laman na talata). $ bbcode-\u003e setParengganHandlingParameters ("\\ n", ""); $ res_text \u003d "Pagsubok ng teksto [b] upang subukan ang pagpapatakbo ng klase"; // Kung sakali, tinanggal namin ang lahat ng natitirang // line break sa form na "\\ r", // kung mananatili sila sa text $ res_text \u003d str_replace ("\\ r", "", $ res_text); // Voila! echo $ bbcode-\u003e parse ($ res_text);

    Afterword

    Siyempre, hindi ako gumawa ng isang buong pagsasalin ng dokumentasyon, ngunit lamang ang pinaka kinakailangan na minimum, para sa mas detalyadong dokumentasyon maaari kang sumangguni sa opisyal na website (sa pangkalahatan, maraming iba pang mga iba't ibang mga posibilidad na inilarawan).

    Hindi rin mahirap ipatupad ang library na ito sa anumang balangkas ng php, halimbawa, matagumpay kong nagawa ito para sa cackePHP.

    Kung nakilala mo rin ang mga katulad na aklatan (gumagana nang tama sa mga talata! 🙂), magiging kawili-wiling malaman ang tungkol sa mga ito.

    Pagpasok

    Ano ang bbcode? Ang BBCode ay isang espesyal na pagpapatupad ng wikang HTML na nagbibigay ng mas maginhawang tampok para sa pag-format ng mga mensahe. Ang kakayahang gumamit ng BBCode sa mga mensahe ay natutukoy ng tagapangasiwa ng lupon. Bilang karagdagan, ang BBCode ay maaaring hindi pinagana ng anumang oras sa anumang nai-post na mensahe nang direkta mula sa form ng pagsulat nito. Ang BBCode mismo ay halos kapareho sa estilo sa HTML, ngunit ang mga tag sa loob nito ay nakapaloob sa mga square bracket [...], at hindi sa< … >. Kapag gumagamit ng ilang mga template, maaari kang magdagdag ng BBCode sa mga mensahe gamit ang simpleng interface na matatagpuan sa itaas ng larangan ng pag-input ng teksto. Ngunit kahit na pagkatapos, ang pagbabasa ng manu-manong ito ay maaaring maging kapaki-pakinabang sa iyo.

    Pag-format ng teksto

    Paano gawing bold, italic o may salungguhit ang teksto?   Kasama sa BBCode ang mga tag para sa mabilis na pagbabago ng estilo ng teksto ng katawan. Maaari mong gawin ito sa mga sumusunod na paraan:
    • Upang maisakatuparan ang teksto, isama ito sa mga tag [b]. Isang halimbawa:

      [b]Kumusta

      magbibigay Kumusta

    • Gumamit ng mga nakabababang tag [u]. Isang halimbawa:

      [u]Magandang umaga

      magbibigay ng magandang umaga

    • Tapos na ang mga Italya sa mga tag. [i]. Isang halimbawa:

      Ito ay [i]mahusay!

      ibibigay ito mahusay!

    Paano mababago ang kulay o laki ng teksto?   Ang mga sumusunod na tag ay maaaring magamit upang baguhin ang kulay o laki ng font (ang pangwakas na hitsura ay nakasalalay sa system at browser ng gumagamit):
    • Maaari mong baguhin ang kulay ng teksto sa pamamagitan ng nakapaligid dito sa mga tag. . Maaari mong tukuyin ang alinman sa isang kilalang pangalan ng kulay (pula, asul, dilaw, atbp.) O ang hexadecimal representasyon nito (#FFFFFF, # 000000, atbp.). Kaya, upang lumikha ng pulang teksto maaari mong gamitin:

      Kumusta

      Kumusta

      Ang parehong mga pamamaraan ay magreresulta sa Kamusta!

    • Nakamit ang pagbabago sa parehong paraan kapag gumagamit ng tag. . Ang tag na ito ay nakasalalay sa mga template na ginamit, ngunit ang inirekumendang format ay isang halaga ng numero na nagpapakita ng sukat ng teksto bilang isang porsyento, mula sa 20 (napakaliit) hanggang 200 (napakalaking) ng default na laki. Isang halimbawa:

      TALAGA

      malamang na magbibigay ng FINE

      habang:

      Sobrang MALAKI!

      magbibigay ng napakalaking BIG!

    Maaari bang pagsamahin ang mga tag ng pag-format?   Oo, siyempre maaari mong. Halimbawa, upang maakit ang pansin, maaari kang sumulat:

    [b]MAKITA SA AKIN!

    kung ano ang magbibigay MAKITA SA AKIN!

    [b] [u]Ang entry na ito ay hindi tama

    Ang pagsipi at pagpapakita ng mga naka-format na teksto

    Ang pagsipi ng teksto sa mga tugon   Mayroong dalawang paraan upang magbanggit ng mga teksto: na may indikasyon ng may-akda at walang pahiwatig.
    • Kapag gumagamit ng pindutan ng Quote upang tumugon sa isang mensahe, ang teksto ng mensahe ay idinagdag sa larangan ng input ng teksto na napapalibutan ng mga tag . Ang pamamaraang ito ay nagbibigay-daan sa iyo na quote na may sanggunian sa may-akda, o sa ibang bagay na nai-type mo sa mga marka ng panipi. Halimbawa, upang quote ang isang piraso ng teksto na isinulat ni Mr. Blobby, type:

      Ipasok ang teksto mula kay G. Narito Blobby

      Bilang isang resulta, bago ang iyong tugon sa mensahe ang teksto na "Mr. Sumulat si Blobby: ". Tandaan ay kinakailangan  isama ang pangalan sa mga marka ng panipi (""); hindi sila maialis.

    • Pinapayagan ka lamang ng pangalawang pamamaraan na magbanggit ng isang bagay. Upang gawin ito, ilagay ang teksto sa pagitan ng mga tag . Kapag nanonood ng isang mensahe, ang teksto na ito ay nasa citation block.
    Code o na-format na output ng teksto   Kung kailangan mong ipakita ang bahagi ng programa ng programa o ibang bagay na dapat ipakita sa isang nakapirming lapad na font (Courier), pagkatapos ay isama ang teksto sa mga tag . Isang halimbawa:

    echo "Ito ang code ng programa";

    Lahat ng pag-format na ginamit sa loob ng mga tag ay mai-save. Ang pag-highlight ng code ng PHP ay maaaring gawin gamit ang tag   at inirerekomenda kapag nagpo-post ng mga mensahe na naglalaman ng mga fragment ng mga code ng PHP.

    Lumikha ng Mga Listahan

    Lumikha ng isang bullet list   Sinusuportahan ng BBCode ang dalawang uri ng mga listahan: bullet at bilang. Halos magkapareho sila sa kanilang mga katumbas ng HTML. Sa isang bullet list, lahat ng mga elemento ay ipinapakita nang sunud-sunod, bawat isa ay minarkahan ng isang simbolo ng marker. Gumamit ng mga tag upang lumikha ng isang bullet list.   at tukuyin ang bawat elemento ng listahan [*] . Halimbawa, upang ipakita ang iyong mga paboritong kulay, maaari mong gamitin ang:


    [*] Pula
    [*] Asul
    [*] Dilaw

    Ito ay makagawa ng isang listahan na tulad nito:

    • Pula
    • Asul
    • Dilaw
    Lumikha ng isang numero ng listahan   Ang pangalawang uri ng listahan - bilang, ay nagbibigay-daan sa iyo upang piliin kung ano ang eksaktong ipapakita bago ang bawat elemento. Gumamit ng mga tag upang lumikha ng isang bilang ng listahan. , o   upang lumikha ng isang alpabetikong listahan. Tulad ng isang bullet list, ang mga item ng listahan ay tinukoy gamit [*] . Isang halimbawa:


    [*] Pumunta sa tindahan
    [*] Bumili ng isang bagong computer
    [*]

    gagawa ng mga sumusunod:

    1. Pumunta sa tindahan
    2. Bumili ng isang bagong computer
    3. Pag-scam sa isang computer kapag nangyari ang isang error
    Para sa isang alpabetikong listahan, gamitin ang sumusunod:


    [*] Paunang sagot
    [*] Pangalawang posibleng sagot
    [*] Pangatlong posibleng sagot

    kung ano ang magbibigay

    1. Paunang sagot
    2. Pangalawang posibleng sagot
    3. Pangatlong posibleng sagot

    Link Building

    Mga link sa ibang site   Sinusuportahan ng phpBB ang ilang mga paraan upang lumikha ng mga link, na kilala rin bilang mga URL.
    Tulad ng lahat ng iba pang mga tag ng BBCode, maaari mong mai-link ang anumang iba pang mga tag. Halimbawa   (tingnan ang susunod na talata) [b] atbp. Tulad ng pag-format ng mga tag, ang tamang pugad ng mga tag ay nasa iyo. Halimbawa, ang sumusunod na entry:

    http://www.teosofia.ru/my-picture.gif

    hindi tama, na maaaring humantong sa kasunod na pagtanggal ng iyong mensahe. Mag-ingat ka