BBCode لXHTML: احتمالان، التعابير المنطقية واحد؟

StackOverflow https://stackoverflow.com/questions/1632798

  •  06-07-2019
  •  | 
  •  

سؤال

وأنا أكتب وحدة نمطية بلوق الصغيرة. أريد المستخدمين لتكون قادرة على كتابة كود BB. ولست بحاجة إلى تحويل هذا إلى XHTML لتخزين في DB، الذي نجح علي أن أفعل لمعظم العلامات، باستثناء [url].

وهناك نوعان من الحالات أريد للسماح:

[url=http://stackoverflow.com/]

والتي ينبغي تحويلها إلى

<a href="http://www.stackoverflow.com">http://www.stackoverflow.com</a>

و

[url=http://stackoverflow.com/]StackOverflow[/url]

والتي ينبغي تحويلها إلى

<a href="http://www.stackoverflow.com" title="StackOverflow">StackOverflow</a>

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

هل كانت مفيدة؟

المحلول

وهذا يجب أن تعمل:

\[url\s*=\s*([^\]]*)]\s*((?:(?!\s*\[/url\]).)*)\s*\[/url\]|\[url\s*=\s*([^\]]*)]

ونمط استبدال:

<a href="$1$3" title="$2">$2$3</a>

واختبار مع هذه المدخلات:

bla [url=http://stackoverflow.com/]StackOverflow[/url] bla
bla [url=http://stackoverflow.com/] bla

وإرجاع:

bla <a href="http://stackoverflow.com/" title="StackOverflow">StackOverflow</a> bla
bla <a href="http://stackoverflow.com/" title="">http://stackoverflow.com/</a> bla

لاحظ أنه في أي حال قد تضطر إلى إضافة بعض التحقق من صحة / الهروب، وشخصيات XML كما غير صالحة ( "، <،> الخ) قد" كسر "العلامة المحتويات.

نصائح أخرى

وشيء من هذا القبيل قطعة مروع العمل ينبغي أن نفعل ذلك:

\[url=([^\]]+)\](?:([^\[]+)\[\/url\])?

وعند مطابقة، وهذا ينبغي وضع رابط في $ 1 و النص في 2 $ إذا كان قد تم تحديد ذلك. لم أكن اختبار هذه بعد ذلك قد يتطلب بعض التغيير والتبديل.

واناليزي وظيفة BBCode2HTML ($ نص)

https://code.google. كوم / ع / pwision / المصدر / استعراض / جذع / المؤتمر الوطني العراقي / BBCode.inc # 150

والخوارزمية لتحويل ال BBCode 2 HTML هي: 1) تنظيم النص ال BBCode الرمز هنا: https://code.google.com/p /pwision/source/browse/trunk/inc/BBCode.inc#60

2) تحويل ال BBCode المنظم إلى XML الرمز هنا: https://code.google.com/p /pwision/source/browse/trunk/inc/BBCode.inc#101

و3) تشغيل تحول XSLT على النص XML. ملف XSLT هنا https://code.google.com/p/pwision /source/browse/trunk/inc/BBCodeXML2HTML.xslt يتم التحول هنا: https://code.google.com/p /pwision/source/browse/trunk/inc/BBCode.inc#113

والأمل لقد ساعدت!

وPS: أ XSLT جيد تعليمي أن تجد هنا: http://www.w3schools.com/xsl/xsl_languages.asp

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top