我正在开展一个项目,这是一个吼叫箱。由于我已经禁用了所有HTML,因为人们很可能会忘记关闭标签并搞砸了所有内容,我想为其他人提供一种不同形式的添加方式。
我想要的是在PHP中设置正则表达式以在文本周围添加标签。这是我想要做的一个例子......
如果某人输入“[Hello!] {everyone}怎么样?”它会显示为......
“您好! 每个人怎么样?”
[]括号之间的文本将变为粗体,{}括号之间的文本将为斜体。
有谁知道如何为此编写正则表达式?
谢谢!
答案 0 :(得分:4)
一种方法是:
$str = preg_replace('~\[([^\]]*)\]~', '<b>\\1</b>', $str);
$str = preg_replace('~{([^}]*)}~', '<i>\\1</i>', $str);
见codepad。
话虽如此,我不赞成创造另一种标记语言。像BBCode一样,这很邪恶。
BBCode是懒惰程序员发明的标记语言,他们不想以正确的方式过滤HTML。结果,我们现在有一个很难实现的松散“标准”。以正确的方式过滤HTML: