سؤال

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

من المفترض أن يدخلوا شيئًا مثل:

[LINK]http://www.domain.com[/LINK]

ومع ذلك ، يمكنهم إدخال شيء كهذا لجعل لون الرابط أحمر:

[LINK]http://www.domain.com 'span style="color:red;"'[/LINK]

هذا هو الكود الذي يحوله:

$text = preg_replace("/\\[LINK\\\](.*?)\\[\/LINK\\]/is",
                       "<a href='$1' target='_blank'>$1</a>", $text);

ايضا, ، لقد نسيت ، هذا هو النوع الآخر:

[LINK=http://www.domain.com]example text[/LINK]

$text = preg_replace("/\\[LINK\=(.*?)\\\](.*?)\\[\/LINK\\]/is",
                       "<a href='$1' target='_blank'>$2</a>", $text);
هل كانت مفيدة؟

المحلول

لا تسمح باقتباسات ومثل هذا في عنوان URL ، وعلامات الشريط التي فشلت في الممر الأول:

$text = preg_replace("/\[LINK\]([^'\"\\s]*?)\[\/LINK\]/is",
                               "<a href='$1' target='_blank'>$1</a>", $text);

$text = preg_replace("/\[LINK\](.*?)\[\/LINK\]/is", "<i>(link removed)</i>", $text);

نصائح أخرى

هذا أمر خطير للغاية ، خاصة إذا كان ضيوفك أذكياء بما يكفي لبدء إضافة معالجات onclick على الرابط.

كما قال MVDS ، استبدل جميع الاقتباسات والرافعة. المدخلات التعقيم ضرورية.

بالنسبة لمشكلة عنوان URL هذه ، لن يساعد ذلك بشكل ضروري. ومع ذلك ، هناك الكثير من صحة REGEX URL والتي من شأنها تجريد أي معدلات رمز صغير شقي من عنوان URL الفعلي.

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