سؤال

كيف تحصل على ركوب جميع BBCodes في سلسلة ولكن الحفاظ على المحتوى؟

مثال:

[B]This is bold[/B] and This is [color=#FFCCCC]colored[/color]

سوف يكون :

هذا جريء وهذا ملون

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

المحلول

أفترض أنه يمكنك فقط استخدام تعبير منتظم و preg_replace وظيفة ، لاستبدال كل ما بين [ و ] بسلسلة فارغة:

$str = '[B]This is bold[/B] and This is [color=#FFCCCC]colored[/color]';
echo preg_replace('#\[[^\]]+\]#', '', $str);

سوف يعرض :

This is bold and This is colored


هنا ، النمط الذي استخدمته هو مطابقة:

  • أ [ حرف : \[
  • أي شيء ليس ] حرف : [^\]]
    • وقت واحد أو أكثر: [^\]]+
  • و ] حرف : \]

لاحظ أن [ و ] لديك معنى خاص - مما يعني أنه يجب عليك الهروب منها عندما تريد أن تفسرهم حرفيًا.

نصائح أخرى

لقد وجدت هذا من هذا المصدر. كل الائتمان يذهب للمؤلف ، شيكس.

function stripBBCode($text_to_search) {
    $pattern = '|[[\/\!]*?[^\[\]]*?]|si';
    $replace = '';
    return preg_replace($pattern, $replace, $text_to_search);
    }

echo stripBBCode($text_to_search);

لقد اختبرته وهو يعمل.

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