سؤال
كيف تحصل على ركوب جميع 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);
لقد اختبرته وهو يعمل.
لا تنتمي إلى StackOverflow