我的论坛有一些类似BBCode的代码:
[quote]
打开table
,tr
,td
...
[/quote]
关闭了table
,tr
和td
...
但是当用户写下另一个[/quote]
时,它会添加另一个</td></tr></table>
,这会关闭“论坛正文”所在的表格。
我知道可能有一个简单的解决方案,但是我把它放在哪里因此关闭一个表不会“破坏布局”可以这么说?
股利?跨度?
还是更复杂?
答案 0 :(得分:1)
它更复杂 - 没有办法告诉HTML解析器“忽略这两点之间的规范”而没有告诉它将内部部分视为原始文本......这将无法工作,因为您正在生成HTML这个BBCode。您需要验证用户输入的BBCode以确保它“格式良好”。
如果只是不是一个选项,你可以通过确保你的论坛主体只包含在BBCode到HTML生成器不生成的标签中来破解它 - 但这限制了你很多bit,并不保证虚假关闭标签不会破坏您的布局。
答案 1 :(得分:1)
尝试preg_replace / regex:
preg_replace('/\[quote\](.*)\[\/quote\]/', "<table><tr><td>$1</td></tr></table>", $string);
这将匹配第一个结束引用标记。