عند استخدام المحرر، ستواجه نقطة واحدة، وهي مشكلة إغلاق العلامات. هذه المشكلة خطيرة للغاية لأنها قد تتسبب في تلف النمط العام لصفحة الويب المعروضة. لقد رأيت مؤخرًا هذه الوظيفة في مكتبة وظائف PJ، وأشعر أن الفكرة سيئة بعض الشيء، ولكنها مثالية نسبيًا، فهي مجرد مسألة ترتيب عند إغلاق العلامة.
قم بتعديل محتويات كل عنصر في المصفوفة arrTags لتحقيق وظيفة إغلاق أي علامة.
لقد أضفت هنا بعض التعليقات لتسهيل الدراسة معًا للجميع.
انسخ رمز الكود كما يلي:
وظيفة إغلاقUBB (strContent)
'***************************************
"إغلاق UBB تلقائيًا."
'***************************************
Dim arrTags، i، OpenPos، ClosePos، re، strMatchs، j، Match
Set re = New RegExp 'قم بتعريف كائن re
re.IgnoreCase = True 'تعيين ما إذا كانت الأحرف حساسة لحالة الأحرف
re.Global = True 'تعيين التوفر العالمي
arrTags = Array(code, quote, list, color, align, Font, size, b, i, u, html) 'إنشاء مصفوفة وتخزين العلامات ذات الصلة التي يجب التحقق من إغلاقها
For i = 0 To UBound(arrTags) 'حلقة لاكتشاف كل عنصر في المصفوفة
OpenPos = 0 'تهيئة عدد علامات البداية للتسمية الحالية
ClosePos = 0 'تهيئة عدد علامات النهاية للعلامة الحالية
re.Pattern = /[ + arrTags(i) + (=[^/[/]]+|)/] 'ابدأ في الحكم على عدد علامات البداية والنهاية على التوالي
تعيين strMatchs = re.Execute(strContent)
لكل مباراة في strMatchs
نقاط البيع المفتوحة = نقاط البيع المفتوحة + 1
التالي
إعادة النمط = /[/ + arrTags(i) + /]
تعيين strMatchs = re.Execute(strContent)
لكل مباراة في strMatchs
كلوسبوس = كلوسبوس + 1
التالي
من أجل j = 1 إلى OpenPos - ClosePos 'عندما يكون عدد علامات البداية والنهاية غير متناسق، أغلق العلامة الحالية
strContent = strContent + [/ + arrTags(i) + ]
التالي
التالي
CloseUBB = strContent
تعيين إعادة = لا شيء
وظيفة النهاية
الملاحظات على Closehtml هي نفسها المذكورة أعلاه
انسخ رمز الكود كما يلي:
وظيفة إغلاق HTML (strContent)
'***************************************
'إغلاق HTML تلقائيًا
'***************************************
Dim arrTags، i، OpenPos، ClosePos، re، strMatchs، j، Match
تعيين إعادة = جديد RegExp
re.IgnoreCase = صحيح
re.Global = صحيح
arrTags = Array(p, DIV,span, table, ul, الخط, b, u, i, h1, h2, h3, h4, h5, h6)
لأني = 0 إلى UBound(arrTags)
نقاط البيع المفتوحة = 0
كلوسبوس = 0
re.Pattern = /< + arrTags(i) + ( [^/</>]+|)/>
تعيين strMatchs = re.Execute(strContent)
لكل مباراة في strMatchs
نقاط البيع المفتوحة = نقاط البيع المفتوحة + 1
التالي
re.Pattern = /</ + arrTags(i) + />
تعيين strMatchs = re.Execute(strContent)
لكل مباراة في strMatchs
كلوسبوس = كلوسبوس + 1
التالي
لـ j = 1 إلى OpenPos - ClosePos
strContent = strContent + </ + arrTags(i) + >
التالي
التالي
Closehtml = strContent
تعيين إعادة = لا شيء
وظيفة النهاية