我有我的論壇BBCode的一些類似代碼:幫助:停止</table>毀滅一個HTML設計
[quote]
打開table
,tr
,td
... [/quote]
關閉table
,tr
和td
...
但是,當用戶把另一個[/quote]
它增加了一個</td></tr></table>
,這關閉表「論壇體」是英寸
我知道有可能是一個簡單的解決方案,但我該怎麼把它在如此關閉表將不會「破布局」可以這麼說?
股利?跨度?
或者是更復雜?
我有我的論壇BBCode的一些類似代碼:幫助:停止</table>毀滅一個HTML設計
[quote]
打開table
,tr
,td
... [/quote]
關閉table
,tr
和td
...
但是,當用戶把另一個[/quote]
它增加了一個</td></tr></table>
,這關閉表「論壇體」是英寸
我知道有可能是一個簡單的解決方案,但我該怎麼把它在如此關閉表將不會「破布局」可以這麼說?
股利?跨度?
或者是更復雜?
嘗試的preg_replace /正則表達式:
preg_replace('/\[quote\](.*)\[\/quote\]/', "<table><tr><td>$1</td></tr></table>", $string);
這將匹配到第一個結束引號標記。
如果他們在線程中有多個匹配的引號,我該如何做? –
這匹配* last * end-quote標籤,因爲'*'是貪婪的。如果在一篇文章中有多個格式正確的引號,這個正則表達式將無法正常工作,它會將它們視爲一個帶有一些額外標籤的大引用。 '(。*?)'是非貪婪的版本,當遇到第一個關閉引號時它將停止匹配。 –
那麼,如何做多個格式正確的引號呢?在循環中不貪心? –
它更復雜 - 有沒有辦法告訴HTML解析器「忽略這兩個點之間的規格」沒有告訴它來治療內飾部件爲原料的文字...這是行不通的,因爲你生成HTML從這BBCode。您需要驗證用戶輸入的BBCode,以確保它「良好形成」。
如果只是不是一個選項,您可以通過確保您的論壇身上只裹在BB代碼到HTML生成不生成標記,破解它 - 但是這限制了你不少,而且它不能保證虛假的關閉標籤不會破壞你的佈局。
不應該爲平衡'[報價]'塊你的服務器端代碼檢查將它們轉換之前,HTML?我會說,這是一個比試圖用CSS破解你的出路更好的解決方案。 – mwan
使用不同的標籤不會解決這個問題,原因很明顯。 –