سؤال

أنا أعمل على صفحة الويب الديناميكية PHP التي لديها <textarea> العنصر الذي يتيح النص كتابة النص ولديه عرضه في "الوقت الحقيقي" في <div> العنصر، فقط جافا سكريبت معالجة النص والعلامات.

أقوم بتغيير "B"، "U"، والعلامات بين قوسين (مثل نمط PHPBB) إلى معادلات HTML الخاصة بهم مثل "قوي"، "U"، وهلم جرا باستخدام JavaScript Regexps.

المشكلة تحدث عندما أحتاج إلى معالجة url tag، حيث أحتاج إلى استخراج عنوان URL من المدخلات التي تبدو مثل هذا:

[url=http://...]

كيف يمكنني استبدال ذلك مع:

<a href="http://...">
هل كانت مفيدة؟

المحلول

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

str.replace(/\[url=([^\s"<>\]]+)\]/gi, '<a href="$1">$1</a>');

يجب أن تأخذ المعلمات في [url=...] و، يحظر أي عمل مضحك (<, > أو مسافات)، قم بتغييرها إلى ارتباط تشعبي، باستخدام عنوان URL كوجهة ونص الرابط.

هذا سوف يسمح أشياء مثل [url=javascript:while(1)alert('Boo!')], ، والتي ستنتج رابطا، عند النقر، سوف يزعج المستخدم حقا - سيكون عليك إضافة بعض تصفية Sanitisation لمنع الاشياء من هذا القبيل.

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