Fashionable man faq php mode bbcode. BB kodlaridan foydalanish to'g'risidagi eslatma (bbCode). Paragraflar va maydonlarni formatlang


Bbcode nima?   BBCode bu HTMLning maxsus variantidir. O'zingizning xabarlaringizda BBCode-dan foydalanishingiz yoki qilmasligingiz administrator tomonidan belgilanadi. Bundan tashqari, siz uni joylashtirayotganda ma'lum bir xabarda BBCode-dan foydalanishni o'chirib qo'yishingiz mumkin. BBCode o'zi HTML uslubiga o'xshash, teglar kvadrat qavs ichida [va] emas, balki o'xshash< и >; Bu ma'lumotlarning qanday namoyish etilishini ko'proq boshqarish imkonini beradi. Ba'zi shablonlardan foydalanganda siz matn kiritish maydonining tepasida joylashgan sodda interfeysdan foydalangan holda o'zingizning xabarlaringizga BBCode qo'shishingiz mumkin. Ammo, shunga qaramay, ushbu qo'llanma foydali bo'lishi mumkin.

Matnni formatlash

Matnni qalin, qiya yoki pastki chiziq bilan qanday qilish kerak   BBCode shrift uslubini tezda o'zgartirish uchun teglarni o'z ichiga oladi, siz buni quyidagi usullar bilan qilishingiz mumkin:
  • Matnni qalin qilish uchun uni ichiga joylashtiring [b]masalan:

    [b]Salom

    bo'ladi Salom

  • Foydalanishni ta'kidlash uchun [u]masalan:

    [u]Xayrli tong

    xayrli tong

  • Kursiv teglar bilan amalga oshiriladi. [i]masalan:

    Bu shunday [i]ajoyib!

    beradi ajoyib!

Matn rangini yoki hajmini qanday o'zgartirish kerak   Rangni yoki shrift hajmini o'zgartirish uchun quyidagi teglardan foydalanish mumkin (oxirgi ko'rinish foydalanuvchi tizimiga va brauzerga bog'liq bo'ladi):
  • Matn rangini uning atrofini o'zgartirish orqali o'zgartirishingiz mumkin. . Siz ma'lum rang nomini (qizil, ko'k, sariq va boshqalar) yoki o'n oltilik sonli tasvirni, masalan, #FFFFFF, # 000000, belgilashingiz mumkin. Shunday qilib, qizil matn yaratish uchun siz quyidagilardan foydalanishingiz mumkin:

    Salom

    Salom

    ikkala usul ham salomga olib keladi!

  • Foydalanishda o'lchovni o'lchash shunga o'xshash tarzda amalga oshiriladi . Ushbu teg ishlatilgan shablonlarga bog'liq, tavsiya etilgan format - bu standart hajmning 20% \u200b\u200b(juda kichik) dan 200% (juda katta) gacha foiz hajmini ko'rsatadigan raqam. Masalan:

    QISM

    katta ehtimol LITTLE bo'ladi

    vaqt:

    Katta!

    katta bo'ladi!

Teglarni birlashtira olamanmi?   Ha, albatta mumkin. Masalan, birovning e'tiborini jalb qilish uchun siz quyidagilarni yozishingiz mumkin:

[b]Menga qarang!

nima beradi Menga qarang!

[b] [u]Bu noto'g'ri

Formatlangan matnlarni iqtibos qilish va namoyish qilish

Javoblarni kotirovka qilish   Matnni havolali yoki havolasiz iqtibos qilishning ikkita usuli mavjud.
  • Xabarga javob berish uchun Quote tugmasidan foydalanganda uning matni o'ralgan blokning kirish maydoniga qo'shiladi . Ushbu usul sizga muallifga yoki u erda yozgan narsangizga iqtibos keltiradi. Masalan, janob tomonidan yozilgan parchani iqtibos qilish uchun. Blobby, siz yozasiz:

    Janobga SMS yuboring Blobby bu erda bo'ladi

    Natijada, "janob" so'zlari Blobby yozgan: ". Seni eslayman kerak  ismni qo'shtirnoq ichiga "" qo'ying, ularni qoldirib bo'lmaydi.

  • Ikkinchi usul sizga shunchaki biror narsani iqtibos qilishingizga imkon beradi. Buning uchun matnni teglarga qo'shish kerak . Xabarni ko'rayotganda, iqtibos blokidagi matn shunchaki ko'rsatiladi.
Kodli yoki formatlangan matnli chiqish   Agar siz dasturning bir qismini yoki doimiy kenglikdagi shriftda (Courier) ko'rsatilishi kerak bo'lgan biror narsani chiqarishingiz kerak bo'lsa, matnni teglarga qo'shish kerak masalan:

echo "Bu ba'zi bir kod";

Teglar ichida ishlatiladigan barcha formatlash saqlanadi. PHP sintaksisini ajratib ko'rsatish yordamida foydalanish mumkin   va o'qishni yaxshilash uchun PHP kodli xabarlarni yuborishda tavsiya etiladi.

Ro'yxatlarni yarating

Belgilangan ro'yxatni yarating   BBCode ikkita turdagi ro'yxatni qo'llab-quvvatlaydi: o'ralgan va raqamlangan. Ular HTML ekvivalenti bilan deyarli bir xil. Belgilangan ro'yxatda barcha elementlar ketma-ket ko'rsatiladi, ularning har biri marker belgisi bilan belgilanadi. Belgilangan ro'yxatni yaratish uchun foydalaning   va har bir element bilan belgilang [*] . Masalan, o'zingizning sevimli ranglaringizni namoyish qilish uchun siz quyidagilardan foydalanishingiz mumkin.


[*] Qizil
[*] Moviy
[*] Sariq

Bu quyidagicha ro'yxatni chiqaradi:

  • Qizil
  • Moviy
  • Sariq
Raqamlangan ro'yxatni yarating   Raqamlangan ikkinchi turdagi ro'yxat har bir element oldida aniq ko'rsatilishini tanlashga imkon beradi. Raqamlangan ro'yxatni yaratish uchun foydalaning   yoki   alifbo ro'yxatini tuzish. Belgilangan ro'yxatda bo'lgani kabi, narsalar ham foydalanishda aniqlanadi [*] . Masalan:


[*] Do'konga boring
[*] Yangi kompyuter sotib oling
[*]

quyidagilarni ishlab chiqaradi:

  1. Do'konga boring
  2. Yangi kompyuter sotib oling
  3. Xato yuz berganda kompyuterni urish
Alifbo tartibidagi ro'yxat uchun quyidagilardan foydalaning:


[*] Birinchi mumkin bo'lgan javob
[*] Ikkinchi mumkin bo'lgan javob
[*] Uchinchi mumkin bo'lgan javob

nima beradi

  1. Birinchi mumkin bo'lgan javob
  2. Ikkinchi mumkin bo'lgan javob
  3. Uchinchi mumkin bo'lgan javob

Bog'lash binosi

Boshqa saytga havolalar   BBCode URL-larni yaratishda bir nechta usullarni qo'llab-quvvatlaydi.
  • Birinchisi tegdan foydalanadi , \u003d belgisidan keyin kerakli URL manzili o'tishi kerak. Masalan, phpBB.com havolasi uchun siz foydalanishingiz mumkin:

    PhpBB-ga tashrif buyuring!

  • Agar URL-ning o'zi havola matni sifatida ko'rinishini xohlasangiz, quyidagilarni bajarishingiz mumkin:

    http://www.phpbb.com/

  • Bundan tashqari, phpBB deb nomlangan funktsiyani qo'llab-quvvatlaydi Avtomatik havolalar, bu teglar va hattoki http: // prefiksisiz havolaga sintaktik to'g'ri URL-manzilni havolaga o'tkazadi. Masalan, xabaringizga www.phpbb.com ni kiritish, avtomatik ravishda www.phpbb.com xabarni ko'rganda qaytariladi.
  • Xuddi shu narsa elektron pochta manzillariga ham tegishli, siz manzilni aniq belgilashingiz mumkin:

    [email protected]

    u [email protected] chiqaradi yoki xabaringizga [email protected] kiritadi va ular ko'rib chiqilganda avtomatik ravishda o'zgartiriladi.

Boshqa barcha BBCode teglari singari, masalan, URL manziliga boshqa teglarni qo'shish mumkin   (keyingi xatboshiga qarang) [b]  va hokazo teglarni formatlashda bo'lgani kabi, teglarning to'g'ri joylashtirilishi sizga bog'liq, masalan:

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

noto'g'ri bo'lsa, bu sizning xabaringizning keyingi yo'q qilinishiga olib kelishi mumkin, shuning uchun ehtiyot bo'ling.

Kirish

bbCode - Bulletin Board Code yoki ko'plab elektron e'lonlar taxtalarida (BBS) va forumlarda xabarlarni formatlash uchun ishlatiladigan markalash tili. Matnni formatlash uchun HTML teglari kabi teglardan foydalaniladi. HTML teglaridan farqli o'laroq, bbCode teglari kvadrat qavs ichiga o'ralgan. Sahifani namoyish etishdan oldin forum mexanizmi matnni tahlil qiladi va bbCode-ni HTML-kodga o'zgartiradi.

Ko'pgina forumlarda BB kodlaridan foydalanish imkoniyati forumning har bir bo'limi uchun administrator tomonidan individual ravishda sozlanadi. Shuning uchun, xabarlarda BB kodlarini ishlatishdan oldin, ularning ruxsat berilganligiga ishonch hosil qilishingiz kerak.

Shrift formatlash

Matn bilan ishlash uchun asosiy teglar:

[p] Oddiy indeksli paragraf.

Siz uslub qilishingiz mumkin bo'lgan xatboshi.
* Bundan keyin, "uslub" HTML-uslubidagi o'xshashlikdir.
   matn HTML-ga o'xshash

matn


** [p] teglari yordamida siz [b], [i], [s] va boshqa teglardan foydalanishingiz mumkin.

Uslub xususiyatlaridan foydalanishingiz mumkin bo'lgan matn.

Uslub bilan xususiyatlarni o'zgartirish uchun ishlatilishi mumkin bo'lgan cheklangan maydon (pozitsiya, chegaralar, belgilash, tarkib xususiyatlari va boshqalar).
* Odatiy bo'lib, hudud chegaralari ko'rinmaydi. Bitta sahifada bir vaqtning o'zida bir nechta joy bo'lishi mumkin.

Matnni formatlash:

[b] Muhim matn, qalin

[i] Muhim matn, kursiv

Faqat jasur

Faqat kursiv

[u] Belgilangan matn

[s] qat'iy matn - o'zgaruvchanlik bilan bir xil

Kichikroq shrift

Yuqoridagi izoh belgisi yoki matn ostidagi indeks

O'chirilgan matn

Shrift hajmi:

13 nuqta shrift

15 nuqta shrift

9px shrift

12px shrift

15px shrift

0 hajmi

+1 hajmi

Hajmi +2

Shrift hajmining mumkin bo'lgan variantlari (vizual baholash) mavjud.

Sarlavhalar:

1-darajali sarlavha

2-darajali sarlavha

3-darajali sarlavha

4-darajali sarlavha

5-darajali sarlavha

6-darajali sarlavha

Shrift yordamida matn yaratish:

Shrift komikslar xonim

Shrift monotipi Corsiva

Shrift Tahoma

Mumkin bo'lgan shrift turi variantlari (ismlar va vizual reyting) mavjud.

Rangli matn yaratish:

Qizil matn
* Siz ranglarning standart og'zaki belgilaridan foydalanishingiz mumkin: Qizil, Yashil, Moviy va boshqalar.

Moviy matn
* # 0000ff raqami RGB palitrasida ko'k rangni anglatadi.

Moviy fon
* Fon ham rangni o'zgartirishi mumkin.

Moviy matn, kulrang fon.

Ba'zi oldindan belgilangan ranglar:

Qora oq qizil qizil-yashil binafsha rang binafsharang maroon apelsinRed MidnightBlue cornflowerBlue
Zangori to'q qizil rangli to'q yashil rang DarkGoldenrod Oltin orkide ko'k-binafsha burgerli shaftoli

O'n oltilik koddagi ba'zi ranglar qizil, yashil va ko'k ranglar (RR GG BB):

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

Ranglar palitrasi va ularning kodlari / nomlari uchun mumkin bo'lgan variantlar mavjud.

Matnni tekislash va paragrafni formatlash

Matnni tekislash:

Matnni chapga tekislang

Uslub bilan chapga tekislash

Paragrafni chap tomonga tekislash

Matnni markazga tekislash

Uslubni markazga moslashtirish

Paragrafda markazni tekislash

Matnni o'ng tomoniga tekislang

Uslub bilan to'g'ri tekislang

Paragrafda o'ng tomonga tekislang

Matnni ikkala tomonga tekislang

Ikkala tomonni ham uslub bilan tekislang

Paragrafni ikkala tomonga tekislash
* Ikkala tomonda ham matni tenglashtirish bitta satrdan uzunroq bo'lgan matnlar uchun ko'rsatiladi.

Izohlar (mulohazalar) paragraf ostida:

[q] Qator qatori

Xususiyatlarga muvofiq narx


  Matnga ega bo'lgan alohida blokda keltirilgan iqtibos
  chap tomonda kichik chiziq va maxsus dizayn (forum uslubi).

Misollar:
  Lorem ipsum dolor o'tiraman
  Lorem ipsum dolor o'tiraman
  Lorem ipsum dolor o'tiraman

Paragraflar va maydonlarni formatlash:

Salom Ushbu xatboshida birinchi jumla qizil chiziqdan bo'ladi, ya'ni. yozilgan. Xuddi bosmaxondagidek. To'g'ri, Internetda bu juda kam uchraydigan odat. Paragraflar bo'sh joy bilan ajratilishi kerak.

  Oldindan formatlangan matn chap va so'z orasidagi bo'shliqni saqlaydi va siz bo'sh joylar bilan belgilab qo'yganingizdan keyin bu qatorni belgilaydi. Diqqat! Yorliq avtomatik ravishda satrlarni ajratmaydi!

Ro'yxatlarni formatlash

Yorliq yoki ro'yxatlangan ro'yxatlar uchun foydalaning:

  • Ro'yxat elementlaridan biri
  • Yana bir shunday narsa
  • Yana bir nuqta.



[*] Yana bir narsa
[*] Yana bir narsa.

Raqamlangan ro'yxatlar uchun tegdan foydalaning:

  1. Ro'yxat elementlaridan biri
  2. Yana bir shunday narsa
  3. Yana bir nuqta.


[*] Ro'yxatdagi elementlardan biri
[*] Yana bir narsa
[*] Yana bir narsa.

Yopish yorlig'i foydalanish uchun majburiy emas:

  • Ro'yxat elementlaridan biri
  • Yana bir shunday narsa
  • Yana bir nuqta.


[*] Ro'yxatdagi elementlardan biri
[*] Yana bir narsa
[*] Yana bir narsa.

Ro'yxat ko'rinishini to'g'ridan-to'g'ri ko'rsatish ham mumkin:
   - raqamlangan ro'yxat
   - alifbo ro'yxati
   Rim raqamlari bilan raqamlangan ro'yxat

Rasmlar

Http://img.cx/img/primer.jpg - rasm qo'shishga misol.

Http://img.cx/img/primer.jpg - chapdagi rasm.

Http://img.cx/img/primer.jpg - o'ngdagi rasm.
* Ushbu kod HTML kodiga o'xshaydi:

Http://img.cx/img/primer.jpg - markazdagi rasm.
* Ushbu kod HTML kodiga o'xshaydi:

Ismlar va ko'rsatmalar bilan o'xshash teglar:

Muhim! Rasm nomidan siz tirnoqlardan foydalana olmaysiz!

Http://img.cx/img/primer.jpg - rasm qo'shishga misol.

Http://img.cx/img/primer.jpg - chapdagi rasm.

Http://img.cx/img/primer.jpg - o'ngdagi rasm.

Http://img.cx/img/primer.jpg - markazdagi rasm.

Belgilangan o'lchamdagi rasmlar:

Http://img.cx/img/primer.jpg - o'lchamlari bo'lgan rasmga misol.
* Ushbu kod HTML kodiga o'xshaydi:

Http://img.cx/img/primer.jpg - chapdagi rasm, o'lchamlari bilan.

Http://img.cx/img/primer.jpg - o'ngdagi rasm, o'lchamlari bilan.

O'tish qatorlari bilan katta rasmlarni joylashtiring:

Http: //www..jpg - tanlangan hududda joylashgan rasm, agar u forumdagi namoyish qilish hajmidan kattaroq bo'lsa.

Manzil - rasmni yangi oynada oching.
* Ushbu kod HTML kodiga o'xshaydi:

Manzil - rasmni bitta oynada oching.
* Ushbu kod HTML kodiga o'xshaydi:

Men vaqti-vaqti bilan mening loyihalarimda (PHP bilan yozilgan) BBCode "tarjimon" dan foydalanishim kerak, va har doim aniq yoki kam hazm qilinadigan echimni izlashga vaqt yo'q, natijada har bir alohida holat uchun "baliqlar" paydo bo'ladi.
  Ammo, endi, men xohlagan narsani topish uchun paydo bo'ldi.

Mening bunday tayyor echimlardan shikoyat qilishim, asosan, ushbu kutubxonalarning paragraflarni to'g'ri qayta ishlay olmasligidadir. Aslida, ular odatda paragraflardan umuman foydalanishmaydi (teg) P), buning o'rniga, ular o'zlarining ishlarining natijasi sifatida shunchaki yorliq qo'shadilar
odatiy qatorni ajratish belgilarini almashtirish. Men ushbu paragrafni taqlid qilish usulini 98 foiz deb hisoblayman, yumshoq qilib aytganda, bu o'rinli emas. Ammo chiziqni o'rash vositaning ichida
  "inson" o'rniga amalga oshirish ancha oson

, ularning aksariyati kabi 🙁 Ba'zilar, hatto br "yanada to'g'ri", degan bahonalar bilan kelishadilar, qisman turli xil tayyor kutubxonalarni ishlab chiquvchilarning dangasaliklari sababli, odamlarning yana bir qismi teg deb o'ylashadi. P  eskirgan (oxir-oqibat, hatto ko'plab tayyor mahsulotlar va saytlarda paragraflar yordamida tuziladi)
) 🙂

Boshlaylik

Ammo tunnel oxirida yorug'lik paydo bo'ladi. Bu BBCode bilan ishlash uchun tayyor sinf, aftidan juda zo'r ish qiladi (men bundan yaxshi narsani ko'rmadim). Faqatgina salbiy narsa, saytda taqdim etilgan hujjatlar rus tilida emas. Men ham ushbu maqoladagi ushbu minusni engib o'tishni xohlayman, rus tilida sharhlar bilan sinfdan foydalanish bo'yicha misol keltiraman.

Avval siz kutubxonani yuklab olishingiz kerak (yozish paytida, kutubxonaning versiyasi 0.3.3 edi). Src papkasida yuklab olingan arxivda sizga kerak bo'lgan ikkita faylni topasiz: stringparser.class.php va stringparser_bbcode.class.php.

Masalan, bizda bo'sh index.php fayli bor deylik va uning yonida biz yuqorida aytib o'tilgan ikkita faylni o'z ichiga olgan / bbcode / papkani yaratamiz.
  Masalan, "index.php" faylining minimal tarkibi quyidagicha bo'lishi kerak (ushbu misolni ishlatsangiz kutubxona ishlayotganligini darhol ko'rishingiz mumkin):

< ?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 ", qator (" blok "," inline "), qator ()); // Sinov satrini qayta ishlang va uni brauzerga echo $ bbcode-\u003e parse (" Test matni, bu so'z [b bo'lishi kerak) ] qalin ");?\u003e

AddCode funktsiyasi

Ehtimol, StringParser_BBCode klassi ob'ektining addCode funktsiyasi ushbu kodga katta qiziqish uyg'otishi mumkin, bu erda uning prototipi va parametr tavsiflari ro'yxati:

Void addCode (string $ code, string $ type, string $ returnback, string $ params, $ content_type string, $ allow_in massivi, $ not_allow_in qatori);

Ushbu funktsiya sinf ob'ekti uchun ma'lum kodlar (bb kodlari) tushunchasini qo'shib qo'yadi, shunda keyinchalik ushbu kodlarni matnda aniqlab, tegishli ravishda qayta ishlay oladi. I.e. Dastlab StringParser_BBCode sinfining ob'ekti standart bb kodlari haqida hech narsa bilmaydi va ularni biron bir tarzda qayta ishlay olmaydi deb aytishimiz mumkin. Shuning uchun, har bir ishga tushirishdan so'ng, ushbu ob'ekt bb-kodlarning barcha turlarida "o'qitilishi" kerak bo'ladi.

$ code (misol uchun, bu 'b' degan ma'noni anglatadi) Matnda ishlov beriladigan kod. I.e. agar siz sinov kodini ko'rsatsangiz, unda teg qayta ishlangan matnda qidiriladi va ko'rib chiqilayotgan funktsiyaning boshqa parametrlaridagi ko'rsatmalarga muvofiq qayta ishlanadi. $ turi (masalan, 'simple_replace' o'rnatilgan), teg qanday ishlov berilishini belgilaydi (u qanaqa). Quyida tavsiflangan turli xil oldindan belgilangan teg turlari mavjud. Bizning misolimizda 'simple_replace' turi ko'rsatilgan, bu teglar juftlashtirilishini (ochilish yorlig'i [b] va yopilish) va bu teglar quyida ko'rsatilgan html teglari bilan almashtirilishini bildiradi. $ qaytarib qaytarish (masalan, u nol) misolida, matnda topilgan tegni qayta ishlash paytida chaqiriladigan funktsiyaning nomini ko'rsatishga imkon beradi. 'Simple_replace' teglari turida bunday funktsiya chaqirilmaydi va shunga mos ravishda nullni ushbu parametrda ko'rsatish mumkin. $ params (misolda, qator ('start_tag' \u003d\u003e ' ',' End_tag \u200b\u200b'\u003d\u003e'')) Ushbu parametr asosan bb tegining o'rniga html yorlig'i qo'yilishi kerakligini bildiradi. Parametrlarning nomi $ type parametrida biz qaysi teg turiga bog'liqligiga to'g'ridan-to'g'ri bog'liq. $ content_type (misol uchun, "inline") Yorliqning ichki tarkib turi. U quyidagi qiymatlarni olishi mumkin: 'inline', 'block', 'link', 'image'. Agar xato qilmasam, siz o'z turlaringizni ro'yxatdan o'tkazishingiz mumkin, shunda siz ushbu tarkib uchun o'z filtrlaringizni ko'rsata olasiz (quydagi filtrlardan foydalanish misoliga qarang). ( Bizning misolimizda, element blok ichida ham, chiziqli elementlar ichida ham bo'lishi mumkinligini ko'rsatdik. $ not_allowed_in (masalan, array () masalalarida) oldingi parametrga nisbatan qarama-qarshi bo'lgan maqsadga ega.

Yorliqlarga ishlov berish turlari

AddCode funktsiyasida $ turi parametrining parametrlari tavsifi.

'Simple_replace' Oddiy juft tegni tasvirlaydi. Yorliqlarni qayta ishlashning ushbu turidan foydalanganda, paramet params funktsiyasi parametrida ikkita katak bo'lishi kerak: $ params ['start_tag'] va $ params ['end_tag']. 'Start_tag' HTML-dagi ochilish yorlig'ining analogini va 'end_tag' - tegishli ravishda yakunlovchi yorliqni o'z ichiga olishi kerak. 'Simple_replace_single' 'simple_replace' bilan bir xil, ammo aslida tarkibga ega bo'lmagan (masalan, br, soat kabi) yagona teglar uchun ishlatiladi. Faqat $ params ['start_tag'] parametrini talab qiladi. "Callback_replace" Ushbu turda siz topilgan mosliklar (qayta qo'ng'iroq qilish funktsiyasidan foydalangan holda) bilan birlashtirilgan teg uchun ishlov berishni o'zgartirasiz. 'Callback_replace_single' 'Callback_replace' bilan bir xil, faqat bitta teglar uchun. 'Usecontent' 'callback_replace' bilan bir xil, faqat bunday teg tarkibidagi boshqa teglar qayta ishlanmaydi, masalan, kod yorlig'i uchun bu qulay. "Usecontent?" Ushbu turdagi vaziyatga qarab "usecontent" yoki "callback_replace" kabi harakat qilishi mumkin. Muayyan variantning dolzarbligi bb yorlig'ida oldindan hisoblangan atribut mavjudligi bilan belgilanadi. Agar atribut topilsa, "callback_replace" ishlov berish ishlatiladi, aks holda teg "usecontent" sifatida ishlov beriladi. Qidiruv uchun atribut nomi $ params ['usecontent_param'] parametri orqali ko'rsatilgan. Agar standart belgilansa, u holda atribut qiymati to'g'ridan-to'g'ri tegga beriladi, masalan, atributning qiymati "http: // link" matni bo'ladi. Ushbu usul ko'pincha, masalan, yorliq uchun ishlatiladi. Ushbu yorliq ikki shaklda ishlatilishi mumkin: http://www.example.com/ va havola matni, shuningdek [b] qalin matn. Birinchi holda, 'usecontent' turi ishlatiladi, chunki havola matni hech qanday formatlashsiz ko'rsatilishi kerak (va agar tashqi belgilar bo'lsa, havolaning o'zi noto'g'ri bo'ladi). Boshqa holda, "callback_replace" turini ishlatish kerak, chunki havolaning o'zi alohida parametr sifatida uzatiladi, va havoladagi hoshiya ichida qandaydir formatlash bo'lishi mumkin.
Izoh: Siz ularni qidirish uchun bir nechta parametrlarni belgilashingiz mumkin, ular uchun $ params ['usecontent_param'] da siz satrni emas, balki satrlarni o'z ichiga olgan qatorni o'tishingiz kerak. Masalan: $ bbcode-\u003e addCode (..., qator ('usecontent_param' \u003d\u003e massiv ('parametr1', 'parametr2')), ...);. "Callback_replace?" "Usontentent?" Ning aksi. Agar usecontent_param-da ko'rsatilgan atributlardan biri tegda bo'lsa, u 'usecontent', aksincha 'callback_replace' kabi qayta ishlanadi.

"Jang" sharoitlaridan namunaviy kod

Bu erda index.php fayliga misol bo'lib, ko'proq teglarni qayta ishlash uchun sinxronlashtirilgan sinf konfiguratsiyasiga ega, shuningdek, qo'ng'iroqni qaytarish funktsiyalari qanday ishlashini tushunish mumkin va hk:

< ?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." ";) // rasmlarni qo'shish funktsiyasi do_bbcode_img ($ amal, $ atributlar, $ tarkib, $ parollar, $ node_object) (// faqat tag ma'lumotlarini tasdiqlaydigan funktsiyaning bir qismi // action \u003d\u003d "validate") (agar (substr ($ tarkib, 0, 5) \u003d\u003d "ma'lumotlar:" || substr ($ tarkib, 0, 5) \u003d\u003d "fayl:" || substr ($ tarkib, 0 , 11) \u003d\u003d "javascript:" || substr ($ tarkib, 0, 4) \u003d\u003d "jar:") (return false;) return true;) // Tegni to'g'ridan-to'g'ri natijani qaytarish bilan // html parametriga o'zgartiring. " ";) // StringParser_BBCode sinfining ob'ektini yaratish $ bbcode \u003d yangi StringParser_BBCode (); // Filtrni qo'shing (qo'shimcha ma'lumot olish uchun hujjatlarni ko'rib chiqing), // bizning funktsiyamiz yordamida konvertatsiya stavkalarini ishlatamiz, bu esa // matndagi satrlarni bitta $ bbcodga o'zgartiradi. -\u003e addFilter (STRINGPARSER_FILTER_PRE, "convertlinebreaks"); // Ob'ektlarning har xil turlari uchun bizning tahlil qiluvchilarimizni qo'shish // (qo'shimcha ma'lumot olish uchun hujjatlarni ko'rib chiqing) // Ushbu teglar tarkibi qaysi funktsiya orqali o'tishi kerakligini ko'rsatamiz, masalan, ushbu funksiya orqali. $ bbcode-\u003e addParser (qator ("blok", "ichki", "bog'lanish", "ro'yxat"), "htmlspecialchars"), $ bbcode-\u003e addParser (array (") blok "," inline "," havola ", "listitem"), "nl2br"); $ bbcode-\u003e addParser ("list", "bbcode_stripcontents"); // ishlatilgan bb kodini qo'shish: // Birinchi darajali sarlavha matni $ bbcode-\u003e addCode ("h1" "," simple_replace ", , array (" start_tag "\u003d\u003e"

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

")," blokirovka ", qator (" listitem "," blok "," bog'lanish "), qator ()); // Formada ishlatiladigan bb kodini qo'shish: // Ikkinchi darajali sarlavha matni $ bbcode-\u003e addCode ( "h2", "simple_replace", , array ("start_tag" \u003d\u003e "

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

")," blokirovka ", qator (" listitem "," blok "," bog'lanish "), qator ()); // Formada ishlatiladigan bb kodini qo'shish: // Uchinchi darajali sarlavha matni $ bbcode-\u003e addCode ( "h3", "simple_replace", , array ("start_tag" \u003d\u003e "

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

")," blokirovka ", qator (" listitem "," blok "," bog'lanish "), qator ()); // Formada ishlatiladigan bb kodini qo'shish: // To'rtinchi darajali sarlavhaning matni $ bbcode-\u003e addCode ( "h4", "simple_replace", , array ("start_tag" \u003d\u003e "

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

")," blokirovka ", qator (" listitem "," blok "," bog'lanish "), qator ()); // Formada ishlatiladigan bb kodini qo'shish: // Beshinchi darajali sarlavha matni $ bbcode-\u003e addCode ( "h5", "simple_replace", , array ("start_tag" \u003d\u003e "
"," end_tag \u200b\u200b"\u003d\u003e"
")," blokirovka ", qator (" listitem "," blok "," bog'lanish "), qator ()); // ishlatilgan bb kodini qo'shish: // oltinchi darajali sarlavhaning matni $ bbcode-\u003e addCode ( "h6", "simple_replace", , array ("start_tag" \u003d\u003e "
"," end_tag \u200b\u200b"\u003d\u003e"
")," blok ", qator (" listitem "," blok "," bog'lanish "), qator ()); // b1 kodlari uchun h1 dan h6 gacha bo'lgan bayroqlarni o'rnatish, // ularning blok elementlari, // html kodni yaratishda yanada foyda keltiradigan // Bunday element, masalan, // boshqa blok elementlar ichida bo'lolmaydi $ bbcode-\u003e setCodeFlag ("h1", "paragraf_type", BBCODE_PARAGRAPH_BLOCK_ELEMENT); $ bbcode -\u003e setCodeFlag ("h2", "paragraf_type", BBCODE_PARAGRAPH_BLOCK_ELEMENT); $ bbcode-\u003e setCodeFlag ("h3", "paragraf_type", BBCODE_PARAGRAPH_BLOCK_ELEMENT); $ bbcode-\u003e setCodeFlag_BBL_BLB_HB_BLLOBB_B_BLLB_B_B_BLLB_B_BBL_B_BLOBB_B_BLLB_B_BBL_B_BLOBB_B_B_LOCK_ELEMENT; bbcode-\u003e setCodeFlag ("h5", "paragraf_type", BBCODE_PARAGRAPH_BLOCK_ELEMENT); $ bbcode-\u003e setCodeFlag ("h6", "paragraf_type", BBCODE_PARAGRAPH_BLOCK_ELEMENT); // bb- qo'shish achigan, shaklida ishlatiladi [b]: «simple_replace" // [b] Tanlangan matn $ bbcode-\u003e addCode ( "b", , array ( "START_TAG" \u003d\u003e " "," end_tag \u200b\u200b"\u003d\u003e"")," inline ", qator (" listitem "," blok "," inline "," link "), qator ()); // bb kodini [i] shaklida qo'shing: // [i] oblique matn $ bbcode-\u003e addCode ("i", "simple_replace", , array ("start_tag" \u003d\u003e " "," end_tag \u200b\u200b"\u003d\u003e"")," inline ", qator (" listitem "," blok "," inline "," link "), qator ()); // Formada ishlatiladigan bb kodini qo'shing: // http: // www. needite.domain va // bog'lanish matni $ bbcode-\u003e addCode ("url", "usecontent?", "do_bbcode_url", qator ("usecontent_param" \u003d\u003e "standart"), "havola", qator "(" listitem "," // "blok", "inline"), qator ("link")); // Formada ishlatiladigan bb kodini qo'shing: //http://www.needsite.domain $ bbcode-\u003e addCode ("link", "callback_replace_single") "," do_bbcode_url ", array ()," link ", array (" listitem "," block "," inline "), array (" link ")); // Formada ishlatiladigan bb kodini qo'shing: // http: //www.needsite.domain/img.jpg $ bbcode-\u003e addCode ("img", "usecontent", "do_bbcode_img", qator (), "image", qator ("listitem", "block", " inline "," link "), array ()); // bb-kodni qo'shing (xuddi shu ma'noda, // kabi): //http://www.needsite. domain / img.jpg $ bbcode-\u003e addCode ("bild", "usecontent", "do_bbcode_img", qator (), "rasm", qator ("listitem", "blok", "inline", "link"), qator ()); // img va bild kodlari bb kodlaridan rasm guruhini yarating. // ushbu guruhlar uchun ba'zi qoidalar $ bbcode-\u003e setOccurrenceType ("img", "image"); $ bbcode-\u003e setOccurrenceType ("bild", "rasm"); // Biz rasmdagi // teglar matnda // ikki martadan ko'p bo'lmagan holda paydo bo'lishi mumkinligini ko'rsatamiz. Bizning holatimizda, foydalanuvchi // bbcode-\u003e setMaxOccurrences ("rasm", 2) matniga ikkita rasmdan ortiq // rasmlarni joylashtirmasligi uchun kerak. // bb kodini $ bbcode-\u003e addCode qo'shing ("list", "simple_replace", , array ("start_tag" \u003d\u003e "
    "," end_tag \u200b\u200b"\u003d\u003e"
")" "ro'yxat", qator ("blok", "listitem"), qator ()); // ushbu tegni faqat teg ichida ishlatish mumkinligini ko'rsatuvchi [*] bb kodini qo'shing // turlari ro'yxati bilan. (biz ushbu turni yuqoridagi yorliqqa tayinladik) $ bbcode-\u003e addCode ("*", "simple_replace", , array ("start_tag" \u003d\u003e "
  • "," end_tag \u200b\u200b"\u003d\u003e"
  • ")," listitem ", array (" list "), array ()); // teglar uchun bayroqlarni o'rnatish va [*] // kod uchun [*] yopilish yorlig'i ixtiyoriy ekanligini, shuning uchun mumkin. // quyidagi tuzilish bo'ladi: // // [*] element // [*] element // // html kodini $ bbcode-\u003e setCodeFlag yaratish jarayonida yopish yorlig'i avtomatik ravishda qo'shiladi //, "*", "yashirin", // Men tushunganimdek, ushbu bayroq [*] // yorlig'i har doim faqat // yangi satr boshida ishlatilishi mumkinligini anglatadi $ bbcode-\u003e setCodeFlag ("*", "paragraflar", true); // $ bbcode-\u003e setCodeFlagning blok elementi ("ro'yxat", "paragraf_tip", BBCODE_PARAGRAPH_BLOCK_ELEMENT); // ochilish yorlig'i oldidan // chiziq belgisi o'chiriladi $ bbcode-\u003e setCodeFlag ("ro'yxat", "opentag.before.newline", BBCODE_NEWLINE_DROP); // yorlig'i yopilishidan oldin // chiziq belgisi yo'q qilinadi $ bbcode-\u003e setCodeFlag ("list", "maxfiy" .before.newline ", BBCODE_NEWLINE_DROP); // Natijada biz bb-kodidagi ro'yxatlardan, // list va * teglaridan foydalanib foydalanishimiz mumkin: // // [*] List elementi // [*] List elementi // [ *] va hokazo. // // paragrafga ishlov berishni faollashtirish $ bbcode-\u003e setRootParbitrHandling (true); // Men tushunganimdek, bu // paragraf ichidagi to'qnashuv chizig'ini almashtirishni istagan belgilarni qanday o'zgartirish kerakligini ko'rsatadi // (mohiyatiga ko'ra, bo'sh paragraflarni qanday bajarish kerak). $ bbcode-\u003e setParbitrHandlingParameters ("\\ n", ""); $ res_text \u003d "Sinov ishlashini sinash uchun [b] matnli testi"; // Shunchaki, biz qolgan barcha \\ satrlarni "\\ r" shaklida o'chirib tashlaymiz, agar ular matnda qolsa $ res_text \u003d str_replace ("\\ r", "", $ res_text); // Voila! echo $ bbcode-\u003e tahlil qilish ($ res_text);

    Keyingi so'z

    Albatta, men hujjatlarni to'liq tarjimasini qilmadim, lekin faqat zaruriy minimal, batafsilroq ma'lumot olish uchun rasmiy veb-saytga murojaat qilishingiz mumkin (umuman olganda, juda ko'p turli xil imkoniyatlar mavjud).

    Ushbu kutubxonani har qanday php doirasida amalga oshirish qiyin emas, masalan, men buni cackePHP uchun muvaffaqiyatli qildim.

    Agar siz shunga o'xshash kutubxonalarni uchratgan bo'lsangiz (paragraflar bilan to'g'ri ishlasangiz! 🙂), ular haqida bilish qiziqarli bo'ladi.

    Kirish

    Bbcode nima? BBCode bu HTML tilining maxsus qo'llanmasi bo'lib, xabarlarni formatlash uchun yanada qulay xususiyatlarni ta'minlaydi. Xabarlarda BBCode-dan foydalanish imkoniyati administrator tomonidan belgilanadi. Bunga qo'shimcha ravishda, siz BBCode istalgan vaqtda har qanday e'lon qilingan xabarning to'g'ridan-to'g'ri yozma shaklidan o'chirib qo'yishingiz mumkin. BBCode o'zi HTML uslubiga juda o'xshash, ammo undagi teglar kvadrat qavs ichida [...] joylashtirilgan va emas.< … >. Ba'zi shablonlardan foydalanganda siz matn kiritish maydonining tepasida joylashgan oddiy interfeysdan foydalangan holda xabarlarga BBCode qo'shishingiz mumkin. Ammo, shunga qaramay, ushbu qo'llanmani o'qish siz uchun foydali bo'lishi mumkin.

    Matnni formatlash

    Matnni qalin, kursiv yoki pastki chiziq bilan qanday qilish mumkin?   BBCode asosiy matnning uslubini tezda o'zgartirish uchun teglarni o'z ichiga oladi. Buni quyidagi usullar bilan qilishingiz mumkin:
    • Matnni qalin qilish uchun uni teglarga ilova qiling [b]. Misol:

      [b]Salom

      beradi Salom

    • Pastki taglardan foydalaning [u]. Misol:

      [u]Xayrli tong

      xayrli tongni

    • Kursiv teglar bilan amalga oshiriladi. [i]. Misol:

      Bu shunday [i]ajoyib!

      beradi ajoyib!

    Matn rangini yoki hajmini qanday o'zgartirish mumkin?   Rangni yoki shrift hajmini o'zgartirish uchun quyidagi teglardan foydalanish mumkin (oxirgi ko'rinish foydalanuvchi tizimiga va brauzerga bog'liq bo'ladi):
    • Matn rangini teglar bilan o'rab o'zgartirishingiz mumkin. . Siz rangning taniqli nomini (qizil, ko'k, sariq va boshqalar) yoki uning o'n oltilik sonli tasvirini (#FFFFFF, # 000000 va boshqalar) belgilashingiz mumkin. Shunday qilib, qizil matn yaratish uchun siz quyidagilardan foydalanishingiz mumkin:

      Salom

      Salom

      Ikkala usul ham salomga olib keladi!

    • O'lchamni o'zgartirish tegdan foydalanganda xuddi shu tarzda amalga oshiriladi. . Ushbu teg ishlatilgan shablonlarga bog'liq, ammo tavsiya etilgan format standart hajmning 20 (juda kichik) dan 200 (juda katta) gacha bo'lgan foiz sifatida matn hajmini ko'rsatadigan raqamli qiymatdir. Misol:

      Kichik

      katta ehtimol FINE beradi

      vaqt:

      JUDA KATTA!

      beradi juda katta BIG!

    Formatlash teglarini birlashtirish mumkinmi?   Ha, albatta mumkin. Masalan, diqqatni jalb qilish uchun siz quyidagilarni yozishingiz mumkin:

    [b]Menga qarang!

    nima beradi Menga qarang!

    [b] [u]Bu yozuv noto'g'ri

    Formatlangan matnlarni iqtibos qilish va namoyish qilish

    Javoblarda matnni kotirovka qilish   Matnlarni iqtibos qilishning ikki yo'li mavjud: muallifni ko'rsatmasdan va ko'rsatmasdan.
    • Xabarga javob berish uchun Quote tugmasidan foydalanganda xabar matni teglar bilan o'ralgan matn kiritish maydoniga qo'shiladi . Ushbu usul sizga muallifga yoki siz tirnoq kiritgan boshqa narsaga murojaat qilishingiz mumkin. Masalan, janob tomonidan yozilgan matndan iqtibos keltirish. Blobby, turi:

      Bu erda janobning matnini kiriting Xiralashgan

      Natijada, xabarga javob berishdan oldin "Mr. Blobby yozgan: ". Eslab qoling zarur  ismni qo'shtirnoq ichiga ("") qo'shing, ularni qoldirib bo'lmaydi.

    • Ikkinchi usul sizga shunchaki biror narsani iqtibos qilishingizga imkon beradi. Buning uchun matnni teglar orasiga qo'ying . Xabarni ko'rayotganda, bu matn iqtibos blokida bo'ladi.
    Kodli yoki formatlangan matnli chiqish   Agar sizga dastur kodini yoki boshqa kengaytirilgan shriftda (Courier) ko'rsatilishi kerak bo'lgan biror narsani ko'rsatish kerak bo'lsa, matnni teglarga qo'shib qo'ying. . Misol:

    echo "Bu dastur kodidir";

    Teglar ichida ishlatiladigan barcha formatlash saqlanadi. PHP kod sintaksisini ta'kidlash teg yordamida amalga oshirilishi mumkin   va PHP kodlari parchalarini o'z ichiga olgan xabarlarni joylashtirishda tavsiya etiladi.

    Ro'yxatlarni yarating

    Belgilangan ro'yxatni yarating   BBCode ikkita turdagi ro'yxatni qo'llab-quvvatlaydi: o'ralgan va raqamlangan. Ular HTML ekvivalenti bilan deyarli bir xil. Belgilangan ro'yxatda barcha elementlar ketma-ket ko'rsatiladi, ularning har biri marker belgisi bilan belgilanadi. Belgilangan ro'yxatni yaratish uchun teglardan foydalaning.   va ro'yxatning har bir elementini bilan belgilang [*] . Masalan, o'zingizning sevimli ranglaringizni namoyish qilish uchun siz quyidagilardan foydalanishingiz mumkin.


    [*] Qizil
    [*] Moviy
    [*] Sariq

    Bu quyidagicha ro'yxatni chiqaradi:

    • Qizil
    • Moviy
    • Sariq
    Raqamlangan ro'yxatni yarating   Ro'yxatning ikkinchi turi - raqamlangan, har bir element oldida aniq ko'rsatiladigan narsani tanlashga imkon beradi. Raqamlangan ro'yxatni yaratish uchun teglardan foydalaning. , yoki   alifbo ro'yxatini tuzish. Belgilangan ro'yxatda bo'lgani kabi, ro'yxat elementlari yordamida aniqlanadi [*] . Misol:


    [*] Do'konga boring
    [*] Yangi kompyuter sotib oling
    [*]

    quyidagilarni ishlab chiqaradi:

    1. Do'konga boring
    2. Yangi kompyuter sotib oling
    3. Xato yuz berganda kompyuterni urish
    Alifbo ro'yxati uchun quyidagilardan foydalaning:


    [*] Birinchi mumkin bo'lgan javob
    [*] Ikkinchi mumkin bo'lgan javob
    [*] Uchinchi mumkin bo'lgan javob

    nima beradi

    1. Birinchi mumkin bo'lgan javob
    2. Ikkinchi mumkin bo'lgan javob
    3. Uchinchi mumkin bo'lgan javob

    Bog'lash binosi

    Boshqa saytga havolalar   phpBB havolalar yaratishning bir necha usullarini qo'llab-quvvatlaydi, shuningdek URL-lar deb ham nomlanadi.
    Boshqa barcha BBCode-teglar singari, siz boshqa har qanday teglarni bog'lashingiz mumkin. Masalan   (keyingi xatboshiga qarang) [b] va h.k. Formatlash teglarida bo'lgani kabi, teglarning to'g'ri joylashtirilishi sizga bog'liq. Masalan, quyidagi yozuv:

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

    noto'g'ri bo'lsa, bu sizning xabaringizning keyingi yo'q qilinishiga olib kelishi mumkin. Ehtiyot bo'ling.