Fashionable man faq php mode bbcode. BB kodlaridan foydalanish to'g'risidagi eslatma (bbCode). Paragraflar va maydonlarni formatlang
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 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!
[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.
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
[*]
Do'konga boring
[*]
Yangi kompyuter sotib oling
[*]
quyidagilarni ishlab chiqaradi:
- Do'konga boring
- Yangi kompyuter sotib oling
- Xato yuz berganda kompyuterni urish
[*]
Birinchi mumkin bo'lgan javob
[*]
Ikkinchi mumkin bo'lgan javob
[*]
Uchinchi mumkin bo'lgan javob
nima beradi
- Birinchi mumkin bo'lgan javob
- Ikkinchi mumkin bo'lgan javob
- 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:
u [email protected] chiqaradi yoki xabaringizga [email protected] kiritadi va ular ko'rib chiqilganda avtomatik ravishda o'zgartiriladi.
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. matn
* Bundan keyin, "uslub" HTML-uslubidagi o'xshashlikdir.
matn HTML-ga o'xshash
** [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:
- Ro'yxat elementlaridan biri
- Yana bir shunday narsa
- 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 "
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 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!
[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.
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
[*]
Do'konga boring
[*]
Yangi kompyuter sotib oling
[*]
quyidagilarni ishlab chiqaradi:
- Do'konga boring
- Yangi kompyuter sotib oling
- Xato yuz berganda kompyuterni urish
[*]
Birinchi mumkin bo'lgan javob
[*]
Ikkinchi mumkin bo'lgan javob
[*]
Uchinchi mumkin bo'lgan javob
nima beradi
- Birinchi mumkin bo'lgan javob
- Ikkinchi mumkin bo'lgan javob
- 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.- Birinchisi tegdan foydalanadi
. \u003d Belgisidan keyin kerakli URL-manzil kiritilishi kerak. Masalan, phpBB.com ga havola yaratish uchun siz quyidagilardan foydalanishingiz mumkin.
Yakuniy shaklda bunday kod quyidagicha ko'rinadi: www.teosofia.ru saytiga tashrif buyuring! Bog'lanish foydalanuvchining brauzer sozlamalariga qarab xuddi shu yoki yangi oynada ochiladi.
- Agar URL havola matni sifatida ko'rinishini xohlasangiz, quyidagilarni bajarishingiz mumkin:
http://www.teosofia.ru/
- Bundan tashqari, phpBB deb nomlangan funktsiya chaqiriladi Avtomatik havolalar. Ushbu funktsiya har qanday sintaktik jihatdan to'g'ri URL-manzilni teglar va http: // prefiksisiz havolaga o'zgartiradi. Masalan, xabarga www.teosofia.ru iborasini kiritish ushbu xabarni ko'rishda www.teosofia.ru saytining avtomatik chiqishiga olib keladi.
- Xuddi shu narsa elektron pochta manzillariga ham tegishli: siz manzilni aniq ko'rsatishingiz mumkin:
nima beradi [email protected] yoki shunchaki xabarga [email protected] manzilini kiriting va u ushbu xabarni ko'rishda avtomatik ravishda o'zgartiriladi.
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.