我有一个系统可以将BBCODE解析为HTML标记。 但我有一个问题。当我插入颜色时,用户还可以放置其他样式。例如:
[color=green;font-size:100px]green text[/color]
通过这种方式用户可以插入聊天大词,这是不好的。
我的解析系统 - > source
解决方案是什么?
答案 0 :(得分:0)
要快速修复,您可以替换
行'/\[color=(.*?)\](.*?)\[\/color\]/is',
带
'/\[color=([^;]*?)\](.*?)\[\/color\]/is',
这种方式在包含;
的颜色标签上不匹配,但用户在=
后面输入的内容仍然在<span>
- 标签中。
另一个选项(可能需要更多工作)是只允许某些颜色:
'/\[color=(#\d{6}|green|blue|red|black)\](.*?)\[\/color\]/is',
这将允许十六进制颜色(如#000000
)和绿色,蓝色,红色和黑色...您可以自由添加其他颜色。