الرجل المألوف faq php مذكرة حول استخدام أكواد BB (bbCode). تنسيق الفقرات والمساحات
تنسيق النص
كيفية جعل النص غامقًا أو مائلًا أو مسطرًا تتضمن BBCode علامات لتغيير نمط الخط بسرعة ، يمكنك القيام بذلك بالطرق التالية:- لجعل النص غامقًا ، ضعه في [B]على سبيل المثال:
[B]مرحبا
سوف تصبح مرحبا
- لتأكيد الاستخدام [U]على سبيل المثال:
[U]صباح الخير
سيكون صباح الخير
- تتم مائل مع العلامات. [I]على سبيل المثال:
إنه كذلك [I]عظيم!
سوف نعطيه عظيم!
- يمكنك تغيير لون النص من خلال المحيطة به.
. يمكنك تحديد اسم لون معروف (أحمر ، أزرق ، أصفر ، إلخ) ، أو تمثيل سداسي عشري ، على سبيل المثال #FFFFFF ، # 000000. وبالتالي ، لإنشاء نص أحمر يمكنك استخدامه:
تحية!
تحية!
كلا الاتجاهين سوف يؤدي إلى مرحبا!
- يتم تغيير حجم بطريقة مماثلة عند استخدام
. تعتمد هذه العلامة على القوالب المستخدمة ، والتنسيق الموصى به عبارة عن رقم يُظهر حجم النص كنسبة مئوية ، من 20٪ (صغير جدًا) إلى 200٪ (كبير جدًا) بالحجم الافتراضي. على سبيل المثال:
SMALL
على الأرجح سيكون قليلا
في حين:
! ضخم
سوف تكون ضخمة!
[B]انظروا الي
ما سوف نعطيه انظروا الي
[ب] [ش]هذا خطأ
نقلا عن وعرض النصوص المنسقة
نقلا عن الإجابات هناك طريقتان لاقتباس النص ، مع أو بدون رابط.- عند استخدام زر اقتباس للرد على رسالة ، تتم إضافة نصها إلى حقل الإدخال في كتلة محاطة
. تسمح لك هذه الطريقة بالاقتباس مع الإشارة إلى المؤلف أو إلى شيء آخر تكتبه هناك. على سبيل المثال ، لاقتباس مقطع كتبه السيد بلوبي ، سوف تكتب:
نص السيد سوف Blobby يكون هنا
ونتيجة لذلك ، فإن الكلمات "السيد كتب بلوبي: ". تذكر لك يجب أرفق الاسم بعلامات اقتباس "" ، ولا يمكن حذفها.
- الطريقة الثانية تسمح لك فقط باقتباس شيء ما. للقيام بذلك ، تحتاج إلى إرفاق النص في العلامات . عند عرض رسالة ، سيتم عرض النص الموجود في كتلة الاستشهاد.
صدى "هذا هو بعض الرموز" ؛
جميع التنسيقات المستخدمة داخل العلامات سيتم حفظها. يمكن تمكين تسليط الضوء على بناء جملة PHP باستخدام ويوصى عند إرسال الرسائل مع رمز PHP لتحسين قابلية القراءة.
إنشاء قوائم
إنشاء قائمة نقطية يدعم BBCode نوعين من القوائم: نقطي ومرقّم. إنها متطابقة تقريبًا معادلاتها في HTML. في قائمة ذات تعداد نقطي ، يتم عرض جميع العناصر بالتسلسل ، ويتم تمييز كل منها برمز علامة. لإنشاء قائمة نقطية ، استخدم وتحديد كل عنصر مع [*] . على سبيل المثال ، لعرض الألوان المفضلة لديك ، يمكنك استخدام:
[*]
أحمر
[*]
أزرق
[*]
أصفر
هذا سوف ينتج قائمة مثل هذا:
- أحمر
- أزرق
- أصفر
[*]
اذهب إلى المتجر
[*]
شراء جهاز كمبيوتر جديد
[*]
سوف تنتج ما يلي:
- اذهب إلى المتجر
- شراء جهاز كمبيوتر جديد
- توبيخ الكمبيوتر عند حدوث خطأ
[*]
أول إجابة ممكنة
[*]
الجواب ممكن الثانية
[*]
الجواب الثالث ممكن
ماذا سوف نعطيه
- أول إجابة ممكنة
- الجواب ممكن الثانية
- الجواب الثالث ممكن
بناء وصلة
روابط إلى موقع آخر يدعم 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] في رسالتك ، وسيتم تحويلها تلقائيًا عند عرضها.
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
تتوفر الخيارات الممكنة للوحة الألوان والرموز / الأسماء الخاصة بها.
محاذاة النص وتنسيق الفقرة
محاذاة النص:
محاذاة النص إلى اليسار
اليسار محاذاة مع النمط
الفقرة اليسار المحاذاة
مركز محاذاة النص
مركز المحاذاة مع النمط
مركز المحاذاة في فقرة
محاذاة النص على الجانب الأيمن
محاذاة اليمين مع الاسلوب
محاذاة في الفقرة إلى اليمين
محاذاة النص على كلا الجانبين
محاذاة على كلا الجانبين مع النمط
محاذاة الفقرة على كلا الجانبين
* يتم عرض محاذاة النص على كلا الجانبين للنصوص التي تزيد عن سطر واحد.
الحواشي (التعليقات) مع المسافة البادئة للفقرة:
[ف] اقتباس في الخط
اقتبس تمشيا مع الخصائص
النص المقتبس في كتلة منفصلة ، والتي سيكون لها
مسافة بادئة صغيرة على اليسار وتصميم خاص (نمط المنتدى).
الأمثلة على ذلك:
أبجد هوز دولور الاعتصام
أبجد هوز دولور الاعتصام
أبجد هوز دولور الاعتصام
تنسيق الفقرات والمساحات:
تحية! في هذه الفقرة ، ستكون الجملة الأولى من الخط الأحمر ، أي بادئة. مثلما هو الحال في المطبعة. صحيح ، هذه ممارسة نادرة على الإنترنت. يجب الفصل بين الفقرات ببساطة بمساحة فارغة.
يحفظ النص المنسق مسبقًا المسافة البادئة على اليسار وبين الكلمات ويحدد المسافة البادئة التي تحددها بمسافات. تحذير! العلامة لا تفعل فواصل الأسطر تلقائيًا!قوائم التنسيق
استخدم علامة أو لقوائم نقطية:
- أحد عناصر القائمة
- عنصر آخر من هذا القبيل
- نقطة أخرى
[*] عنصر آخر من هذا القبيل
[*] عنصر آخر.
بالنسبة للقوائم المرقمة ، استخدم العلامة:
- أحد عناصر القائمة
- عنصر آخر من هذا القبيل
- نقطة أخرى
[*] أحد العناصر في القائمة
[*] عنصر آخر من هذا القبيل
[*] عنصر آخر.
علامة الإغلاق اختيارية للاستخدام:
- أحد عناصر القائمة
- عنصر آخر من هذا القبيل
- نقطة أخرى
[*] أحد العناصر في القائمة
[*] عنصر آخر من هذا القبيل
[*] عنصر آخر.
مؤشر مباشر لعرض القائمة هو ممكن أيضا:
- قائمة مرقمة
- قائمة أبجدية
- قائمة مرقمة بالأرقام الرومانية
الصور
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 "
خاتمة
بالطبع ، لم أقم بترجمة كاملة للوثائق ، لكن فقط الحد الأدنى الضروري ، للحصول على وثائق أكثر تفصيلاً يمكنك الرجوع إلى الموقع الرسمي (بشكل عام ، هناك إمكانيات أكثر مختلفة موصوفة).
من الصعب أيضًا تنفيذ هذه المكتبة في أي إطار عمل php ، على سبيل المثال ، لقد قمت بهذا بنجاح من أجل cackePHP.
إذا قابلت أيضًا مكتبات مماثلة (تعمل بشكل صحيح مع الفقرات!) ، فسيكون من المثير للاهتمام معرفة هذه المكتبات.
دخول
ما هو البيكود؟ BBCode هو تطبيق خاص للغة HTML يوفر ميزات أكثر ملاءمة لتنسيق الرسائل. يتم تحديد القدرة على استخدام BBCode في الرسائل من قبل مسؤول اللوحة. بالإضافة إلى ذلك ، يمكن تعطيل BBCode بواسطتك في أي وقت في أي رسالة منشورة مباشرةً من نموذج الكتابة الخاص بها. BBCode نفسها تشبه إلى حد كبير نمط HTML ، ولكن العلامات الموجودة بها محاطة بأقواس مربعة [...] ، وليس في< … >. عند استخدام بعض القوالب ، يمكنك إضافة BBCode إلى الرسائل باستخدام الواجهة البسيطة الموجودة أعلى حقل إدخال النص. ولكن حتى ذلك الحين ، قد يكون من المفيد لك قراءة هذا الدليل.تنسيق النص
كيفية جعل النص غامقًا أو مائلًا أو مسطرًا؟ BBCode يتضمن علامات لتغيير نمط النص الأساسي بسرعة. يمكنك القيام بذلك بالطرق التالية:- لجعل النص غامقًا ، ضعه في العلامات [B]. مثال:
[B]مرحبا
سوف نعطيه مرحبا
- استخدام تسطير العلامات [U]. مثال:
[U]صباح الخير
سوف نعطيه صباح الخير
- تتم مائل مع العلامات. [I]. مثال:
إنه كذلك [I]عظيم!
سوف نعطيه عظيم!
- يمكنك تغيير لون النص بإحاطة العلامات.
. يمكنك تحديد اسم لون معروف (أحمر ، أزرق ، أصفر ، إلخ) أو تمثيله السداسي عشر (#FFFFFF ، # 000000 ، إلخ). وبالتالي ، لإنشاء نص أحمر يمكنك استخدام:
تحية!
تحية!
كلا الطريقتين سينتج عنها Hello!
- يتم تغيير حجم بنفس الطريقة عند استخدام العلامة.
. تعتمد هذه العلامة على القوالب المستخدمة ، ولكن التنسيق الموصى به هو قيمة رقمية تُظهر حجم النص كنسبة مئوية ، تتراوح من 20 (صغير جدًا) إلى 200 (كبير جدًا) بالحجم الافتراضي. مثال:
FINE
على الأرجح سوف نعطيه غرامة
في حين:
كبيرة جدا!
سوف تعطي كبيرة جدا!
[B]انظروا الي
ما سوف نعطيه انظروا الي
[ب] [ش]هذا الإدخال غير صحيح
نقلا عن وعرض النصوص المنسقة
نقلا عن النص في الردود هناك طريقتان لاستشهاد النصوص: مع الإشارة إلى المؤلف وبدون إشارة.- عند استخدام زر اقتباس للرد على رسالة ، تتم إضافة نص الرسالة إلى حقل إدخال النص المحاط بعلامات
. تسمح لك هذه الطريقة بالاقتباس مع الإشارة إلى المؤلف ، أو إلى شيء آخر تكتبه بين علامات اقتباس. على سبيل المثال ، لاقتباس قطعة من النص كتبها السيد بلوبي ، اكتب:
أدخل النص من السيد هنا تضع،
نتيجة لذلك ، قبل الرد على الرسالة النص "السيد كتب بلوبي: ". تذكر هو ضروري أرفق الاسم بعلامات اقتباس ("") ؛ ولا يمكن حذفها.
- الطريقة الثانية تسمح لك فقط باقتباس شيء ما. للقيام بذلك ، ضع النص بين العلامات . عند عرض رسالة ، سيكون هذا النص في كتلة الاقتباس.
صدى "هذا هو رمز البرنامج" ؛
جميع التنسيقات المستخدمة داخل العلامات سيتم حفظها. يمكن أن يتم بناء الجملة رمز PHP تسليط الضوء باستخدام العلامة ويوصى عند نشر الرسائل التي تحتوي على أجزاء من رموز PHP.
إنشاء قوائم
إنشاء قائمة نقطية يدعم BBCode نوعين من القوائم: نقطي ومرقّم. إنها متطابقة تقريبًا معادلاتها في HTML. في قائمة ذات تعداد نقطي ، يتم عرض جميع العناصر بالتسلسل ، ويتم تمييز كل منها برمز علامة. استخدم العلامات لإنشاء قائمة نقطية. وتحديد كل عنصر من عناصر القائمة مع [*] . على سبيل المثال ، لعرض الألوان المفضلة لديك ، يمكنك استخدام:
[*]
أحمر
[*]
أزرق
[*]
أصفر
هذا سوف ينتج قائمة مثل هذا:
- أحمر
- أزرق
- أصفر
[*]
اذهب إلى المتجر
[*]
شراء جهاز كمبيوتر جديد
[*]
سوف تنتج ما يلي:
- اذهب إلى المتجر
- شراء جهاز كمبيوتر جديد
- توبيخ الكمبيوتر عند حدوث خطأ
[*]
أول إجابة ممكنة
[*]
الجواب ممكن الثانية
[*]
الجواب الثالث ممكن
ماذا سوف نعطيه
- أول إجابة ممكنة
- الجواب ممكن الثانية
- الجواب الثالث ممكن
بناء وصلة
روابط إلى موقع آخر يدعم phpBB عدة طرق لإنشاء روابط ، والتي تعرف أيضًا باسم عناوين URL.- أول واحد يستخدم علامة
. بعد علامة \u003d ، يجب إدخال عنوان URL المطلوب. على سبيل المثال ، لإنشاء رابط إلى phpBB.com ، يمكنك استخدام:
في الشكل النهائي ، سيبدو هذا الرمز كما يلي: قم بزيارة www.teosofia.ru! سيتم فتح الرابط في نفس النافذة أو في نافذة جديدة ، اعتمادًا على إعدادات متصفح المستخدم.
- إذا كنت تريد أن يظهر عنوان URL كنص ارتباط ، يمكنك ببساطة القيام بما يلي:
http://www.teosofia.ru/
- بالإضافة إلى ذلك ، تسمى الدالة phpBB الروابط التلقائية. تحول هذه الوظيفة أي عنوان URL صالح بناءً إلى رابط دون الحاجة للعلامات وبادئة http: //. على سبيل المثال ، إدخال العبارة www.teosofia.ru في الرسالة سيؤدي إلى الإصدار التلقائي لـ www.teosofia.ru عند عرض هذه الرسالة.
- الأمر نفسه ينطبق على عناوين البريد الإلكتروني: يمكنك تحديد العنوان بشكل صريح:
ما سوف نعطيه [email protected] أو ببساطة أدخل العنوان [email protected] في الرسالة ، وسيتم تحويله تلقائيًا عند عرض هذه الرسالة.
http://www.teosofia.ru/my-picture.gif
غير صحيح ، مما قد يؤدي إلى الحذف اللاحق لرسالتك. كن حذرا.