الرجل المألوف faq php مذكرة حول استخدام أكواد BB (bbCode). تنسيق الفقرات والمساحات


ما هو البيكود؟   BBCode هو نوع خاص من HTML. يتم تحديد ما إذا كان يمكنك استخدام BBCode في مشاركاتك أم لا بواسطة مسؤول المنتدى. بالإضافة إلى ذلك ، يمكنك تعطيل استخدام BBCode في رسالة محددة عند نشرها. يشبه BBCode نفسه في HTML ، يتم وضع العلامات بين قوسين معقوفين [و] ، لا< и >. يوفر مزيدًا من التحكم في كيفية عرض البيانات. عند استخدام بعض القوالب ، يمكنك إضافة BBCode إلى رسائلك باستخدام الواجهة البسيطة الموجودة أعلى حقل إدخال النص. ولكن حتى مع ذلك ، قد يكون هذا الدليل مفيدًا.

تنسيق النص

كيفية جعل النص غامقًا أو مائلًا أو مسطرًا   تتضمن BBCode علامات لتغيير نمط الخط بسرعة ، يمكنك القيام بذلك بالطرق التالية:
  • لجعل النص غامقًا ، ضعه في [B]على سبيل المثال:

    [B]مرحبا

    سوف تصبح مرحبا

  • لتأكيد الاستخدام [U]على سبيل المثال:

    [U]صباح الخير

    سيكون صباح الخير

  • تتم مائل مع العلامات. [I]على سبيل المثال:

    إنه كذلك [I]عظيم!

    سوف نعطيه عظيم!

كيفية تغيير لون النص أو حجمه   يمكن استخدام العلامات التالية لتغيير اللون أو حجم الخط (يعتمد المظهر النهائي على نظام المستخدم ومتصفحه):
  • يمكنك تغيير لون النص من خلال المحيطة به. . يمكنك تحديد اسم لون معروف (أحمر ، أزرق ، أصفر ، إلخ) ، أو تمثيل سداسي عشري ، على سبيل المثال #FFFFFF ، # 000000. وبالتالي ، لإنشاء نص أحمر يمكنك استخدامه:

    تحية!

    تحية!

    كلا الاتجاهين سوف يؤدي إلى مرحبا!

  • يتم تغيير حجم بطريقة مماثلة عند استخدام . تعتمد هذه العلامة على القوالب المستخدمة ، والتنسيق الموصى به عبارة عن رقم يُظهر حجم النص كنسبة مئوية ، من 20٪ (صغير جدًا) إلى 200٪ (كبير جدًا) بالحجم الافتراضي. على سبيل المثال:

    SMALL

    على الأرجح سيكون قليلا

    في حين:

    ! ضخم

    سوف تكون ضخمة!

هل يمكنني الجمع بين العلامات؟   نعم بالطبع يمكنك ذلك. على سبيل المثال ، لجذب انتباه شخص ما ، يمكنك كتابة:

[B]انظروا الي

ما سوف نعطيه انظروا الي

[ب] [ش]هذا خطأ

نقلا عن وعرض النصوص المنسقة

نقلا عن الإجابات   هناك طريقتان لاقتباس النص ، مع أو بدون رابط.
  • عند استخدام زر اقتباس للرد على رسالة ، تتم إضافة نصها إلى حقل الإدخال في كتلة محاطة . تسمح لك هذه الطريقة بالاقتباس مع الإشارة إلى المؤلف أو إلى شيء آخر تكتبه هناك. على سبيل المثال ، لاقتباس مقطع كتبه السيد بلوبي ، سوف تكتب:

    نص السيد سوف Blobby يكون هنا

    ونتيجة لذلك ، فإن الكلمات "السيد كتب بلوبي: ". تذكر لك يجب  أرفق الاسم بعلامات اقتباس "" ، ولا يمكن حذفها.

  • الطريقة الثانية تسمح لك فقط باقتباس شيء ما. للقيام بذلك ، تحتاج إلى إرفاق النص في العلامات . عند عرض رسالة ، سيتم عرض النص الموجود في كتلة الاستشهاد.
رمز أو إخراج النص المنسق   إذا كنت بحاجة إلى إخراج جزء من البرنامج أو أي شيء يجب عرضه بخط ثابت العرض (Courier) ، يجب عليك إرفاق النص في العلامات على سبيل المثال:

صدى "هذا هو بعض الرموز" ؛

جميع التنسيقات المستخدمة داخل العلامات سيتم حفظها. يمكن تمكين تسليط الضوء على بناء جملة PHP باستخدام   ويوصى عند إرسال الرسائل مع رمز PHP لتحسين قابلية القراءة.

إنشاء قوائم

إنشاء قائمة نقطية   يدعم BBCode نوعين من القوائم: نقطي ومرقّم. إنها متطابقة تقريبًا معادلاتها في HTML. في قائمة ذات تعداد نقطي ، يتم عرض جميع العناصر بالتسلسل ، ويتم تمييز كل منها برمز علامة. لإنشاء قائمة نقطية ، استخدم   وتحديد كل عنصر مع [*] . على سبيل المثال ، لعرض الألوان المفضلة لديك ، يمكنك استخدام:


[*] أحمر
[*] أزرق
[*] أصفر

هذا سوف ينتج قائمة مثل هذا:

  • أحمر
  • أزرق
  • أصفر
إنشاء قائمة مرقمة   يتيح لك النوع الثاني من القائمة ، المُرقّم ، اختيار ما سيتم عرضه بالضبط قبل كل عنصر. لإنشاء قائمة ذات تعداد رقمي ، استخدم   أو   لإنشاء قائمة أبجدية. كما هو الحال مع قائمة نقطية ، يتم تعريف العناصر باستخدام [*] . على سبيل المثال:


[*] اذهب إلى المتجر
[*] شراء جهاز كمبيوتر جديد
[*]

سوف تنتج ما يلي:

  1. اذهب إلى المتجر
  2. شراء جهاز كمبيوتر جديد
  3. توبيخ الكمبيوتر عند حدوث خطأ
للحصول على قائمة أبجدية ، استخدم:


[*] أول إجابة ممكنة
[*] الجواب ممكن الثانية
[*] الجواب الثالث ممكن

ماذا سوف نعطيه

  1. أول إجابة ممكنة
  2. الجواب ممكن الثانية
  3. الجواب الثالث ممكن

بناء وصلة

روابط إلى موقع آخر   يدعم BBCode عدة طرق لإنشاء عناوين URL.
  • أول واحد يستخدم علامة ، بعد علامة \u003d ، يجب أن يذهب عنوان URL المطلوب. على سبيل المثال ، للحصول على رابط إلى phpBB.com ، يمكنك استخدام:

    زيارة phpBB!

  • إذا كنت تريد أن يظهر عنوان URL نفسه كنص الرابط ، يمكنك ببساطة القيام بما يلي:

    http://www.phpbb.com/

  • بالإضافة إلى ذلك ، يدعم phpBB ميزة تسمى الروابط التلقائيةسيؤدي ذلك إلى ترجمة أي عنوان URL صحيح بناءً إلى الرابط دون الحاجة إلى العلامات وحتى البادئة http: //. على سبيل المثال ، إدخال www.phpbb.com في رسالتك سيعود تلقائيًا إلى www.phpbb.com عند عرض الرسالة.
  • الأمر نفسه ينطبق على عناوين البريد الإلكتروني ، يمكنك إما تحديد العنوان بشكل صريح:

    [email protected]

    التي ستصدر [email protected] ، أو ببساطة أدخل [email protected] في رسالتك ، وسيتم تحويلها تلقائيًا عند عرضها.

كما هو الحال مع جميع علامات BBCode الأخرى ، يمكنك إرفاق أي علامات أخرى في عنوان URL ، على سبيل المثال   (انظر الفقرة التالية) [B]  كما هو الحال مع علامات التنسيق ، فإن تداخل العلامات الصحيح يعود إليك ، على سبيل المثال:

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

غير صحيح ، مما قد يؤدي إلى الحذف اللاحق لرسالتك ، لذا كن حذرًا.

مقدمة

bbCode - رمز لوحة الإعلانات ، أو لغة الترميز المستخدمة لتنسيق الرسائل على العديد من لوحات النشرات الإلكترونية (BBS) والمنتديات. لتنسيق النص ، يتم استخدام علامات مثل علامات HTML. بخلاف علامات HTML ، يتم وضع علامات bbCode بين قوسين معقوفين. قبل عرض الصفحة ، يقوم مشغل المنتدى بتوزيع النص وتحويل bbCode إلى تعليمات HTML البرمجية.

في العديد من المنتديات ، يتم تكوين القدرة على استخدام أكواد BB بشكل فردي بواسطة المسؤول لكل قسم من أقسام المنتدى. لذلك ، قبل استخدام أكواد BB في الرسائل ، يجب عليك التأكد من السماح بها.

تنسيق الخط

العلامات الأساسية للعمل مع النص:

[p] فقرة المسافة البادئة العادية.

فقرة يمكنك الاسلوب.
* فيما يلي ، "النمط" هو تناظرية للأسلوب في HTML.
   النص مشابه في HTML

النص


** مع العلامات [p] ، يمكنك استخدام علامات أخرى ، مثل [b] ، [i] ، [s] ، إلخ.

النص الذي يمكنك استخدامه لخصائص النمط.

مساحة محدودة يمكن استخدامها لتغيير الخصائص بنمط (الموضع ، الحدود ، المسافة البادئة ، خصائص المحتوى ، إلخ).
* بشكل افتراضي ، حدود المنطقة غير مرئية. يمكن أن تحتوي الصفحة الواحدة على عدة مناطق في وقت واحد.

تنسيق النص:

[B] نص مهم ، غامق

[I] نص مهم ، مائل

فقط جريئة

فقط مائل

[U] النص المسطر

[s] يتوسطه نص - مثل الاختلاف

أصغر خط

علامة حاشية سفلية أعلاه أو فهرس أسفل النص

النص المحذوف

حجم الخط:

خط 13 نقطة

15 نقطة الخط

9px الخط

خط 12px

15px الخط

الحجم 0

حجم +1

الحجم +2

تتوفر خيارات حجم الخط الممكنة (التقييم المرئي).

العناوين:

المستوى 1 العنوان

المستوى 2 العنوان

المستوى 3 العنوان

4th المستوى العنوان

المستوى 5 العنوان

المستوى 6 العنوان

عمل نص مع الخطوط:

الخط الهزلي بلا السيدة

الخط Monotype كورسيفا

الخط تاهوما

تتوفر خيارات نوع الخط الممكنة (الأسماء والتصنيف المرئي).

صنع النص مع اللون:

النص الأحمر
* يمكنك استخدام التسميات اللفظية القياسية للألوان: الأحمر ، الأخضر ، الأزرق ، إلخ.

النص الأزرق
* الرقم # 0000ff يعني اللون الأزرق في لوحة RGB.

خلفية زرقاء
* الخلفية يمكن أيضا تغيير اللون.

النص الأزرق ، خلفية رمادية.

بعض الألوان المحددة مسبقا:

أسود أبيض أحمر أخضر أزرق بنفسجي Firebrick Maroon OrangeRed MidnightBlue CornflowerBlue
سماوي أصفر أرجواني DarkGreen DarkGoldenrod الذهب الأوركيد الأزرق البنفسجي Burlywood PeachPuff

بعض الألوان في الشفرة السداسية عشرية هي شدة اللون الأحمر والأخضر والأزرق (RR GG BB):

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

تتوفر الخيارات الممكنة للوحة الألوان والرموز / الأسماء الخاصة بها.

محاذاة النص وتنسيق الفقرة

محاذاة النص:

محاذاة النص إلى اليسار

اليسار محاذاة مع النمط

الفقرة اليسار المحاذاة

مركز محاذاة النص

مركز المحاذاة مع النمط

مركز المحاذاة في فقرة

محاذاة النص على الجانب الأيمن

محاذاة اليمين مع الاسلوب

محاذاة في الفقرة إلى اليمين

محاذاة النص على كلا الجانبين

محاذاة على كلا الجانبين مع النمط

محاذاة الفقرة على كلا الجانبين
* يتم عرض محاذاة النص على كلا الجانبين للنصوص التي تزيد عن سطر واحد.

الحواشي (التعليقات) مع المسافة البادئة للفقرة:

[ف] اقتباس في الخط

اقتبس تمشيا مع الخصائص


  النص المقتبس في كتلة منفصلة ، والتي سيكون لها
  مسافة بادئة صغيرة على اليسار وتصميم خاص (نمط المنتدى).

الأمثلة على ذلك:
  أبجد هوز دولور الاعتصام
  أبجد هوز دولور الاعتصام
  أبجد هوز دولور الاعتصام

تنسيق الفقرات والمساحات:

تحية! في هذه الفقرة ، ستكون الجملة الأولى من الخط الأحمر ، أي بادئة. مثلما هو الحال في المطبعة. صحيح ، هذه ممارسة نادرة على الإنترنت. يجب الفصل بين الفقرات ببساطة بمساحة فارغة.

  يحفظ النص المنسق مسبقًا المسافة البادئة على اليسار وبين الكلمات ويحدد المسافة البادئة التي تحددها بمسافات. تحذير! العلامة لا تفعل فواصل الأسطر تلقائيًا!

قوائم التنسيق

استخدم علامة أو لقوائم نقطية:

  • أحد عناصر القائمة
  • عنصر آخر من هذا القبيل
  • نقطة أخرى



[*] عنصر آخر من هذا القبيل
[*] عنصر آخر.

بالنسبة للقوائم المرقمة ، استخدم العلامة:

  1. أحد عناصر القائمة
  2. عنصر آخر من هذا القبيل
  3. نقطة أخرى


[*] أحد العناصر في القائمة
[*] عنصر آخر من هذا القبيل
[*] عنصر آخر.

علامة الإغلاق اختيارية للاستخدام:

  • أحد عناصر القائمة
  • عنصر آخر من هذا القبيل
  • نقطة أخرى


[*] أحد العناصر في القائمة
[*] عنصر آخر من هذا القبيل
[*] عنصر آخر.

مؤشر مباشر لعرض القائمة هو ممكن أيضا:
   - قائمة مرقمة
   - قائمة أبجدية
   - قائمة مرقمة بالأرقام الرومانية

الصور

Http://img.cx/img/primer.jpg - مثال على إدراج صورة.

HTTP: / /img.cx/img/primer.jpg - الصورة على اليسار.

HTTP: / /img.cx/img/primer.jpg - الصورة على اليمين.
* هذا الرمز مشابه لرمز HTML:

HTTP: / /img.cx/img/primer.jpg - صورة في الوسط.
* هذا الرمز مشابه لرمز HTML:

علامات مماثلة مع أسماء وتلميحات الأدوات:

! المهم لا يمكنك استخدام علامات الاقتباس في اسم الصورة!

Http://img.cx/img/primer.jpg - مثال على إدراج صورة.

HTTP: / /img.cx/img/primer.jpg - الصورة على اليسار.

HTTP: / /img.cx/img/primer.jpg - الصورة على اليمين.

HTTP: / /img.cx/img/primer.jpg - صورة في الوسط.

الصور ذات الأحجام المحددة:

Http://img.cx/img/primer.jpg - مثال على صورة بالحجم.
* هذا الرمز مشابه لرمز HTML:

HTTP: / /img.cx/img/primer.jpg - الصورة على اليسار ، مع الحجم.

HTTP: / /img.cx/img/primer.jpg - صورة على اليمين ، مع الحجم.

إدراج صور كبيرة مع أشرطة التمرير:

HTTP: //www..jpg - صورة في المنطقة المحددة ، إذا كانت أكبر من حجم العرض المتاح في المنتدى.

العنوان - افتح الصورة في نافذة جديدة.
* هذا الرمز مشابه لرمز HTML:

العنوان - افتح الصورة في نفس النافذة.
* هذا الرمز مشابه لرمز HTML:

أحتاج بشكل دوري لاستخدام BBCode "مترجم" في مشاريعي (مكتوب بلغة PHP) ، ولا يوجد دائمًا وقت للبحث عن حل أكثر أو أقل هضمًا ، مما يؤدي في النهاية إلى استخدام أو إنشاء "عكازات" لكل حالة محددة.
  لكن الآن ، على ما يبدو ، اتضح ليجد ما أردت.

عادة ما تكون شكواي حول هذه الحلول الجاهزة هي في المقام الأول عدم قدرة هذه المكتبات على معالجة الفقرات بشكل صحيح. في الواقع ، لا يستخدمون عادة الفقرات على الإطلاق (علامة P) ، بدلاً من ذلك ، نتيجة لعملهم ، يقومون ببساطة بإدراج علامة
استبدال الأحرف فاصل الأسطر المعتادة. أنا أعتبر هذه الطريقة من مضاهاة الفقرة في 98 في المئة ، بعبارة ملطفة ، غير مناسب. ولكن منذ التفاف الخط هو في حدود الوسائل
  أسهل بكثير لتنفيذ بدلا من "الإنسان"

، كما يفعل معظمهم 🙁 حتى أن البعض توصلوا إلى أعذار يقولون إن br أكثر صحة ، جزئياً بسبب كسل مطوري المكتبات المختلفة الجاهزة ، يعتقد جزء آخر من الناس أن العلامة P  عفا عليها الزمن (بعد كل شيء ، حتى في العديد من المنتجات والمواقع النهائية ، يتم تشكيل الفقرات باستخدام
) 🙂

لنبدأ

ولكن يبدو أن هناك ضوء في نهاية النفق. هذا فصل جاهز للعمل مع BBCode ، والذي ، على ما يبدو ، يقوم بعمل ممتاز (لم أر شيئًا أفضل بعد). السلبية الوحيدة هي أن الوثائق المقدمة على الموقع ليست باللغة الروسية. أريد أيضًا أن أتغلب على هذا الطرح في هذه المقالة ، مع إعطاء مثال على استخدام الفصل مع التعليقات الروسية.

تحتاج أولاً إلى تنزيل المكتبة (في وقت كتابة هذا التقرير ، كانت نسخة المكتبة 0.3.3). في الأرشيف الذي تم تنزيله في مجلد src ، ستجد ملفين نحتاجهما: stringparser.class.php و stringparser_bbcode.class.php.

على سبيل المثال ، لنفترض أن لدينا ملف index.php فارغًا وبجواره سنقوم بإنشاء مجلد / bbcode / يحتوي على الملفين المذكورين أعلاه.
  على سبيل المثال ، يجب أن يكون الحد الأدنى لمحتويات ملف "index.php" كما يلي (من خلال تشغيل هذا المثال ، يمكنك على الفور معرفة ما إذا كانت المكتبة تعمل):

< ?php //Вставляем файл библиотеки require_once "bbcode/stringparser_bbcode.class.php"; //Создаем объект класса StringParser_BBCode $bbcode = new StringParser_BBCode (); //Добавляем объекту класса понятие о тэге [b] //(в итоге только этот тэг и будет //обрабатываться этим классом) $bbcode->addCode ("b"، "simple_replace"، null، array ("start_tag" \u003d\u003e " "،" end_tag \u200b\u200b"\u003d\u003e"") ،" مضمنة "، صفيف (" كتلة "،" مضمنة ") ، صفيف ()) ؛ // معالجة سلسلة الاختبار وإخراجها إلى المستعرض يردد $ bbcode-\u003e parse (" نص الاختبار ، يجب أن تكون هذه الكلمة [b ] جريئة ") ؛؟\u003e

وظيفة AddCode

ربما تتسبب وظيفة addCode الخاصة بكائن فئة StringParser_BBCode في زيادة الاهتمام بهذه التعليمة البرمجية ، فيما يلي نموذجها الأولي وقائمة أوصاف المعلمات:

Vode addCode (string $ code، string $ type، string $ callback، string $ params، string $ content_type، array $ allow_in، array $ not_allowed_in)؛

تضيف هذه الوظيفة مفهوم أكواد معينة (أكواد bb) لكائن الفئة حتى تتمكن لاحقًا من اكتشاف هذه الرموز في النص ومعالجتها وفقًا لذلك. أي يمكننا القول أنه في البداية لا يعرف كائن فئة StringParser_BBCode أي شيء عن أكواد bb القياسية ولا يمكنه معالجتها بأي طريقة. لذلك ، بعد كل تهيئة ، سيحتاج هذا الكائن إلى "تدريب" في جميع أنواع أكواد bb.

الكود $ (في المثال ، يعني "ب") الكود الذي تبحث عنه في النص للمعالجة. أي إذا حددت رمز الاختبار ، فسيتم البحث عن العلامة في النص المعالج ومعالجتها وفقًا للتعليمات في المعلمات الأخرى للوظيفة المعنية. $ type (في المثال ، تم تعيين "simple_replace") يحدد كيفية معالجة العلامة (ما نوعها). هناك العديد من أنواع العلامات المحددة مسبقًا والتي سيتم وصفها أدناه. في مثالنا ، يتم تحديد النوع "simple_replace" الذي يشير إلى أنه سيتم إقران العلامة (علامة الفتح [b] والإغلاق) وأنه سيتم استبدال هذه العلامات بعلامات html التالية. رد اتصال $ (في المثال يكون فارغًا) يتيح لك تحديد اسم الوظيفة التي سيتم استدعاؤها عند معالجة العلامة الموجودة في النص. في حالة نوع العلامة "simple_replace" ، لا يتم استدعاء هذه الوظيفة ، وبالتالي ، يمكن تحديد قيمة خالية في هذه المعلمة. params $ (في المثال ، صفيف ('start_tag' \u003d\u003e ‘ ‘،‘ End_tag \u200b\u200b’\u003d\u003e‘‘)) تشير هذه المعلمة أساسًا إلى علامة html التي يجب إدراجها بدلاً من علامة bb. يعتمد اسم المعلمات مباشرةً على نوع العلامة التي حددناها في المعلمة type type. $ content_type (في المثال ، "مضمّن") نوع المحتوى الداخلي للعلامة. يمكن أن يأخذ القيم: "مضمّنة" ، "كتلة" ، "رابط" ، "صورة". إذا لم أكن مخطئًا ، فيمكنك أيضًا تسجيل أنواعك حتى تتمكن من تحديد عوامل التصفية الخاصة بك لهذا المحتوى (انظر مثال استخدام المرشحات أدناه). $ allow_in (في المثال ، القيمة هي صفيف ('block' ، 'inline')) في هذه المعلمة ، يمكنك تحديد أنواع الكائنات التي يمكن أن يكون كود bb الذي تم إنشاؤه داخلها (سيتم ببساطة تجاهل معالجتها بخلاف ذلك). في مثالنا ، أشرنا إلى أن العنصر يمكن أن يكون داخل عناصر الكتلة وداخل العناصر الخطية. $ not_allowed_in (في المثال ، صفيف () يهم) له غرض معاكس في المعنى للمعلمة السابقة.

أنواع معالجة العلامات

وصف الخيارات الخاصة بقيمة المعلمة $ type في وظيفة addCode.

"Simple_replace" يصف علامة زوج بسيطة. عند استخدام هذا النوع من معالجة العلامات ، يجب أن تحتوي معلمة دالة парамет params 'على خليتين: $ params [' start_tag '] و $ params [' end_tag \u200b\u200b']. يجب أن يحتوي "Start_tag" على نسخة تماثلية لعلامة الفتح بلغة HTML و "end_tag" - العلامة الختامية ، على التوالي. "Simple_replace_single" مثل "simple_replace" ، ولكنه يستخدم فقط للعلامات الفردية التي ، في الواقع ، ليس لها محتوى (مثل br ، hr ، إلخ). لا يتطلب سوى المعلمة $ params [‘start_tag’]. ‘Callback_replace With باستخدام هذا النوع ، يمكنك تحويل المعالجة للمطابقات الموجودة (باستخدام وظيفة رد الاتصال الخاصة بك) للعلامة المقترنة. "Callback_replace_single" مثل "callback_replace" ، ولكن فقط للعلامات الفردية. "Usecontent" مثل "callback_replace" ، فقط في محتويات مثل هذه العلامة لن تتم معالجة العلامات الأخرى ، على سبيل المثال ، هذا مناسب للعلامة البرمجية. "Usecontent؟" يمكن أن يتصرف هذا النوع مثل "usecontent" أو "callback_replace" اعتمادًا على الموقف. يتم تحديد أهمية خيار معين من خلال وجود سمة مقدرة مسبقًا في علامة bb. إذا تم العثور على السمة ، فسيتم استخدام معالجة "callback_replace" ، وإلا ستتم معالجة العلامة كـ "usecontent". يتم تحديد اسم السمة للبحث من خلال المعلمة $ params ['usecontent_param']. إذا تم تحديد الإعداد الافتراضي ، فسيتم تعيين قيمة السمة مباشرةً للعلامة ، على سبيل المثال ، ستكون قيمة السمة الافتراضية هي النص "http: // link". غالبًا ما تستخدم هذه التقنية ، على سبيل المثال ، للعلامة. يمكن استخدام هذه العلامة في نموذجين: http://www.example.com/ و Link text ، وكذلك [b] نص غامق. في الحالة الأولى ، سيتم استخدام نوع "usecontent" ، لأن يجب عرض نص الرابط دون أي تنسيق (وفي الواقع ، سيكون الرابط نفسه غير صحيح إذا كان يحتوي على أحرف غريبة). في حالة أخرى ، يجب استخدام نوع "callback_replace" لأن يتم تمرير الارتباط نفسه كمعلمة منفصلة ، وقد يحتوي النص المؤطر في الارتباط على نوع من التنسيق.
ملاحظة: يمكنك تحديد العديد من المعلمات للبحث عنها ، والتي في $ params ['usecontent_param'] تحتاج إلى تمرير ليس سلسلة ، ولكن صفيف يحتوي على سلاسل. على سبيل المثال: $ bbcode-\u003e addCode (...، array ('usecontent_param' \u003d\u003e array (‘parameter1 '،‘ parameter2 ’))، ...)؛ "Callback_replace؟" هل هو عكس 'usecontent؟'. إذا حدثت إحدى السمات المحددة في usecontent_param في العلامة ، فسيتم التعامل معها على أنها "usecontent" ، وإلا فإنها "callback_replace".

رمز عينة من شروط "القتال"

فيما يلي مثال لملف index.php بتكوين فئة متقدم جدًا لمعالجة عدد أكبر من العلامات ، ومن الممكن أيضًا فهم كيفية عمل وظائف رد الاتصال ، وما إلى ذلك:

< ?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." "؛) // دالة لإدراج صور وظيفة do_bbcode_img ($ action ، سمات $ ، محتوى $ ، $ params ، $ node_object) (// جزء من الوظيفة التي / تقوم فقط بالتحقق من صحة بيانات العلامة إذا ($ الإجراء \u003d\u003d "التحقق من صحة") (إذا (substr (محتوى $ ، 0 ، 5) \u003d\u003d "data:" || substr ($ محتوى ، 0 ، 5) \u003d\u003d "file:" || substr ($ content ، 0 ، 11) \u003d\u003d "javascript:" || substr ($ content، 0، 4) \u003d\u003d "jar:") (return false؛) return true؛) // مباشرة قم بتحويل العلامة إلى // html option مع إرجاع نتيجة إرجاع " "؛) // إنشاء كائن من فئة StringParser_BBCode $ bbcode \u003d جديد StringParser_BBCode () ؛ // إضافة عامل تصفية (لمزيد من التفاصيل ، انظر إيقاف الوثائق) ، // باستخدام دالة convertlinebreaks الخاصة بنا ، والتي / / تحويل موجزات الأسطر في النص إلى رمز $ واحد -\u003e addFilter (STRINGPARSER_FILTER_PRE ، "convertlinebreaks") ؛ // أضف محللينا لأنواع مختلفة من الكائنات // (لمزيد من التفاصيل انظر إيقاف الوثائق) // نوضح من خلال الوظيفة / محتويات هذه العلامات يجب أن تذهب ، على سبيل المثال ، من خلال وظيفة // htmlspecialchars لمنع XSS ، إلخ. $ bbcode-\u003e addParser (array ("block" ، "inline" ، "link" ، "listitem") ، "htmlspecialchars") ؛ $ bbcode-\u003e addParser (array ("( حظر "،" مضمن "،" رابط "، "listitem") ، "nl2br") ؛ $ bbcode-\u003e addParser ("list" ، "bbcode_stripcontents") ؛ // إضافة رمز bb المستخدم كـ: // نص رأس المستوى الأول $ bbcode-\u003e addCode ("h1 "،" simple_replace "، null، array (" start_tag "\u003d\u003e"

"،" end_tag \u200b\u200b"\u003d\u003e"

") ،" block "، array (" listitem "،" block "،" link ") ، array ()) ؛ // أضف كود bb المستخدم في النموذج: // Second header text $ bbcode-\u003e addCode ( "h2"، "simple_replace"، null، array ("start_tag" \u003d\u003e "

"،" end_tag \u200b\u200b"\u003d\u003e"

") ،" block "، array (" listitem "،" block "،" link ") ، array ()) ؛ // أضف كود bb المستخدم في النموذج: // Third header text $ bbcode-\u003e addCode ( "h3"، "simple_replace"، null، array ("start_tag" \u003d\u003e "

"،" end_tag \u200b\u200b"\u003d\u003e"

") ،" block "، array (" listitem "،" block "،" link ") ، array ()) ؛ // إضافة رمز bb المستخدم في النموذج: // نص رأس المستوى الرابع $ bbcode-\u003e addCode ( "h4"، "simple_replace"، null، array ("start_tag" \u003d\u003e "

"،" end_tag \u200b\u200b"\u003d\u003e"

") ،" block "، array (" listitem "،" block "،" link ") ، array ()) ؛ // إضافة رمز bb المستخدم في النموذج: // نص رأس المستوى الخامس $ bbcode-\u003e addCode ( "h5"، "simple_replace"، null، array ("start_tag" \u003d\u003e "
"،" end_tag \u200b\u200b"\u003d\u003e"
") ،" block "، array (" listitem "،" block "،" link ") ، array ()) ؛ // إضافة رمز bb المستخدم كـ: // نص رأس المستوى السادس $ bbcode-\u003e addCode ( "h6"، "simple_replace"، null، array ("start_tag" \u003d\u003e "
"،" end_tag \u200b\u200b"\u003d\u003e"
") ،" block "، array (" listitem "،" block "،" link ") ، array ()) ؛ // تعيين إشارات لرموز bb من h1 إلى h6 ، // تشير إلى أنها عناصر كتلة ، // الذي سيستفيد بشكل أكبر // إنشاء شفرة html الذكية. مثل هذا العنصر ، على سبيل المثال ، لا يمكن أن يكون // داخل عناصر الحظر الأخرى $ 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 bbcode-\u003e setCodeFlag ("h5" ، "paragraph_type" ، BBCODE_PARAGRAPH_BLOCK_ELEMENT) ؛ $ bbcode-\u003e setCodeFlag ("h6"، "paragraph_type"، BBCODE_PARAGRAPH_BLOCK_ELEMENT)؛ // Add bb- التطوير التنظيمي [ب]، ويستخدم على شكل: // [ب] النص المحدد $ bbcode-\u003e addCode ( "ب"، "simple_replace"، لاغية، مجموعة ( "START_TAG" \u003d\u003e " "،" end_tag \u200b\u200b"\u003d\u003e"") ،" مضمن "، صفيف (" listitem "،" block "،" مضمن "،" link ") ، array ()) ؛ // أضف رمز BB [i] ، المستخدم في النموذج: // [i] النص المائل $ bbcode-\u003e addCode ("i"، "simple_replace"، null، array ("start_tag" \u003d\u003e " "،" end_tag \u200b\u200b"\u003d\u003e"") ،" مضمن "، صفيف (" listitem "،" block "،" مضمن "،" link ") ، array ()) ؛ // أضف رمز bb المستخدم في النموذج: // http: // www. needsite.domain و // Link text $ bbcode-\u003e addCode ("url"، "usecontent؟"، "do_bbcode_url"، array ("usecontent_param" \u003d\u003e "default")، "link"، array ("listitem"، " block "،" inline ")، array (" link "))؛ // إضافة رمز bb المستخدم في النموذج: //http://www.needsite.domain $ bbcode-\u003e addCode (" link "،" callback_replace_single "،" do_bbcode_url "، array ()،" link "، array (" listitem "،" block "،" inline ")، array (" link "))؛ // Add the bb code used in form: // http: //www.needsite.domain/img.jpg $ bbcode-\u003e addCode ("img"، "usecontent"، "do_bbcode_img"، array ()، "image"، array ("listitem"، "block"، " مضمن "،" link ") ، array ()) ؛ // أضف كود bb (بمعنى نفسه ، // as) المستخدم في النموذج: //http://www.needsite. domain / img.jpg $ bbcode-\u003e addCode ("bild" ، "usecontent" ، "do_bbcode_img" ، array () ، "image" ، array ("listitem" ، "block" ، "inline" ، "link") ، مجموعة ()) ؛ // قم بإنشاء مجموعة صور من رموز BB img و bild // لإمكانية لاحقة لإعداد // بعض القواعد لهذه المجموعات $ bbcode-\u003e setOccurrenceType ("img"، "image")؛ $ bbcode-\u003e setOccurrenceType ("bild"، "image")؛ // نشير إلى أن العلامات من مجموعة الصور // يمكن أن تحدث (تتم معالجتها) في النص لا يزيد عن // مرتين. في حالتنا ، يعد هذا ضروريًا حتى لا يتمكن المستخدم // من إدراج أكثر من صورتين في نص الرسالة $ bbcode-\u003e setMaxOccurrences ("image"، 2)؛ / / أضف كود bb $ bbcode-\u003e addCode ("list"، "simple_replace"، null، array ("start_tag" \u003d\u003e "
    "،" end_tag \u200b\u200b"\u003d\u003e"
") ،" list "، array (" block "،" listitem ") ، array ()) ؛ // أضف رمز BB [*] ، مشيرًا إلى أن هذه العلامة // يمكن استخدامها فقط داخل العلامة // مع قائمة الأنواع (خصصنا هذا النوع للعلامة أعلاه) $ bbcode-\u003e addCode ("*"، "simple_replace"، null، array ("start_tag" \u003d\u003e "
  • "،" end_tag \u200b\u200b"\u003d\u003e"
  • ")،" listitem "، array (" list ")، array ())؛ // عيّن الأعلام للعلامات و [*] // بيّن أنه بالنسبة للكود [*] علامة الإغلاق // اختيارية ، وبالتالي ، فمن الممكن سيكون هناك // الإنشاء التالي: // // [*] Item // [*] Item // // سيتم إضافة علامة الإغلاق تلقائيًا // في عملية إنشاء كود html code $ bbcode-\u003e setCodeFlag ("*"، "closetag"، BBCODE_CLOSETAG_OPTIONAL) ؛ // كما أفهمها ، تعني هذه العلامة أن العلامة [*] // يمكن استخدامها دائمًا فقط // في بداية سطر جديد $ bbcode-\u003e setCodeFlag ("*" ، "فقرات "، صواب) ؛ // عنصر كتلة من $ bbcode-\u003e setCodeFlag ("قائمة" ، "paragraph_type" ، BBCODE_PARAGRAPH_BLOCK_ELEMENT) ؛ // قبل علامة الفتح / / ستتم إزالة حرف السطر $ bbcode-\u003e setCodeFlag ("list"، "opentag.before.newline"، BBCODE_NEWLINE_DROP)؛ // قبل علامة الإغلاق // ستتم إزالة حرف السطر $ bbcode-\u003e setCodeFlag ("list"، "closetag" .before.newline "، BBCODE_NEWLINE_DROP)؛ // كنتيجة ، يمكننا استخدام القوائم في كود BB ، // باستخدام القائمة وعلامات * معا: // // [*] عنصر القائمة // [*] عنصر القائمة // [ *] الخ // // تنشيط معالجة الفقرة $ bbcode-\u003e setRootParagraphHandling (صواب) ؛ كما أفهمها ، يشير هذا إلى ما الأحرف التي تريد استبدال فاصل الأسطر الذي تمت مواجهته داخل الفقرة // (في جوهرها ، كيفية التعامل مع الفقرات الفارغة). $ bbcode-\u003e setParagraphHandlingParameters ("\\ n"، "")؛ $ res_text \u003d "اختبار النص [b] لاختبار تشغيل الفصل" ؛ // فقط في حالة ، نقوم بحذف جميع فواصل الأسطر // المتبقية في النموذج "\\ r" ، // إذا بقوا في النص $ res_text \u003d str_replace ("\\ r"، ""، $ res_text)؛ // فويلا! echo $ bbcode-\u003e parse ($ res_text)؛

    خاتمة

    بالطبع ، لم أقم بترجمة كاملة للوثائق ، لكن فقط الحد الأدنى الضروري ، للحصول على وثائق أكثر تفصيلاً يمكنك الرجوع إلى الموقع الرسمي (بشكل عام ، هناك إمكانيات أكثر مختلفة موصوفة).

    من الصعب أيضًا تنفيذ هذه المكتبة في أي إطار عمل php ، على سبيل المثال ، لقد قمت بهذا بنجاح من أجل cackePHP.

    إذا قابلت أيضًا مكتبات مماثلة (تعمل بشكل صحيح مع الفقرات!) ، فسيكون من المثير للاهتمام معرفة هذه المكتبات.

    دخول

    ما هو البيكود؟ BBCode هو تطبيق خاص للغة HTML يوفر ميزات أكثر ملاءمة لتنسيق الرسائل. يتم تحديد القدرة على استخدام BBCode في الرسائل من قبل مسؤول اللوحة. بالإضافة إلى ذلك ، يمكن تعطيل BBCode بواسطتك في أي وقت في أي رسالة منشورة مباشرةً من نموذج الكتابة الخاص بها. BBCode نفسها تشبه إلى حد كبير نمط HTML ، ولكن العلامات الموجودة بها محاطة بأقواس مربعة [...] ، وليس في< … >. عند استخدام بعض القوالب ، يمكنك إضافة BBCode إلى الرسائل باستخدام الواجهة البسيطة الموجودة أعلى حقل إدخال النص. ولكن حتى ذلك الحين ، قد يكون من المفيد لك قراءة هذا الدليل.

    تنسيق النص

    كيفية جعل النص غامقًا أو مائلًا أو مسطرًا؟   BBCode يتضمن علامات لتغيير نمط النص الأساسي بسرعة. يمكنك القيام بذلك بالطرق التالية:
    • لجعل النص غامقًا ، ضعه في العلامات [B]. مثال:

      [B]مرحبا

      سوف نعطيه مرحبا

    • استخدام تسطير العلامات [U]. مثال:

      [U]صباح الخير

      سوف نعطيه صباح الخير

    • تتم مائل مع العلامات. [I]. مثال:

      إنه كذلك [I]عظيم!

      سوف نعطيه عظيم!

    كيفية تغيير لون أو حجم النص؟   يمكن استخدام العلامات التالية لتغيير اللون أو حجم الخط (يعتمد المظهر النهائي على نظام المستخدم ومتصفحه):
    • يمكنك تغيير لون النص بإحاطة العلامات. . يمكنك تحديد اسم لون معروف (أحمر ، أزرق ، أصفر ، إلخ) أو تمثيله السداسي عشر (#FFFFFF ، # 000000 ، إلخ). وبالتالي ، لإنشاء نص أحمر يمكنك استخدام:

      تحية!

      تحية!

      كلا الطريقتين سينتج عنها Hello!

    • يتم تغيير حجم بنفس الطريقة عند استخدام العلامة. . تعتمد هذه العلامة على القوالب المستخدمة ، ولكن التنسيق الموصى به هو قيمة رقمية تُظهر حجم النص كنسبة مئوية ، تتراوح من 20 (صغير جدًا) إلى 200 (كبير جدًا) بالحجم الافتراضي. مثال:

      FINE

      على الأرجح سوف نعطيه غرامة

      في حين:

      كبيرة جدا!

      سوف تعطي كبيرة جدا!

    هل يمكن دمج علامات التنسيق؟   نعم بالطبع يمكنك ذلك. على سبيل المثال ، لجذب الانتباه ، يمكنك كتابة:

    [B]انظروا الي

    ما سوف نعطيه انظروا الي

    [ب] [ش]هذا الإدخال غير صحيح

    نقلا عن وعرض النصوص المنسقة

    نقلا عن النص في الردود   هناك طريقتان لاستشهاد النصوص: مع الإشارة إلى المؤلف وبدون إشارة.
    • عند استخدام زر اقتباس للرد على رسالة ، تتم إضافة نص الرسالة إلى حقل إدخال النص المحاط بعلامات . تسمح لك هذه الطريقة بالاقتباس مع الإشارة إلى المؤلف ، أو إلى شيء آخر تكتبه بين علامات اقتباس. على سبيل المثال ، لاقتباس قطعة من النص كتبها السيد بلوبي ، اكتب:

      أدخل النص من السيد هنا تضع،

      نتيجة لذلك ، قبل الرد على الرسالة النص "السيد كتب بلوبي: ". تذكر هو ضروري  أرفق الاسم بعلامات اقتباس ("") ؛ ولا يمكن حذفها.

    • الطريقة الثانية تسمح لك فقط باقتباس شيء ما. للقيام بذلك ، ضع النص بين العلامات . عند عرض رسالة ، سيكون هذا النص في كتلة الاقتباس.
    رمز أو إخراج النص المنسق   إذا كنت بحاجة إلى عرض جزء من رمز البرنامج أو أي شيء آخر يجب عرضه بخط ثابت (Courier) ، فقم بإرفاق النص في العلامات . مثال:

    صدى "هذا هو رمز البرنامج" ؛

    جميع التنسيقات المستخدمة داخل العلامات سيتم حفظها. يمكن أن يتم بناء الجملة رمز PHP تسليط الضوء باستخدام العلامة   ويوصى عند نشر الرسائل التي تحتوي على أجزاء من رموز PHP.

    إنشاء قوائم

    إنشاء قائمة نقطية   يدعم BBCode نوعين من القوائم: نقطي ومرقّم. إنها متطابقة تقريبًا معادلاتها في HTML. في قائمة ذات تعداد نقطي ، يتم عرض جميع العناصر بالتسلسل ، ويتم تمييز كل منها برمز علامة. استخدم العلامات لإنشاء قائمة نقطية.   وتحديد كل عنصر من عناصر القائمة مع [*] . على سبيل المثال ، لعرض الألوان المفضلة لديك ، يمكنك استخدام:


    [*] أحمر
    [*] أزرق
    [*] أصفر

    هذا سوف ينتج قائمة مثل هذا:

    • أحمر
    • أزرق
    • أصفر
    إنشاء قائمة مرقمة   النوع الثاني من القائمة - المرقمة ، يتيح لك اختيار ما سيتم عرضه بالضبط قبل كل عنصر. استخدم العلامات لإنشاء قائمة ذات تعداد رقمي. أو   لإنشاء قائمة أبجدية. كما هو الحال مع قائمة ذات تعداد نقطي ، يتم تعريف عناصر القائمة باستخدام [*] . مثال:


    [*] اذهب إلى المتجر
    [*] شراء جهاز كمبيوتر جديد
    [*]

    سوف تنتج ما يلي:

    1. اذهب إلى المتجر
    2. شراء جهاز كمبيوتر جديد
    3. توبيخ الكمبيوتر عند حدوث خطأ
    للحصول على قائمة أبجدية ، استخدم ما يلي:


    [*] أول إجابة ممكنة
    [*] الجواب ممكن الثانية
    [*] الجواب الثالث ممكن

    ماذا سوف نعطيه

    1. أول إجابة ممكنة
    2. الجواب ممكن الثانية
    3. الجواب الثالث ممكن

    بناء وصلة

    روابط إلى موقع آخر   يدعم phpBB عدة طرق لإنشاء روابط ، والتي تعرف أيضًا باسم عناوين URL.
    كما هو الحال مع جميع علامات BBCode الأخرى ، يمكنك ربط أي علامات أخرى. على سبيل المثال   (انظر الفقرة التالية) [B] إلخ كما هو الحال مع علامات التنسيق ، فإن تداخل العلامات الصحيح أمر متروك لك. على سبيل المثال ، الإدخال التالي:

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

    غير صحيح ، مما قد يؤدي إلى الحذف اللاحق لرسالتك. كن حذرا.