2011-08-23 62 views
4

我使用現有的PHP腳本降價這裏:http://michelf.com/projects/php-markdown/有沒有辦法來防止Markdown嵌套濫用?

今天我注意到,如果有人發佈包含文本這樣的消息:

>>>>>>>>>>>>>>>>>> Hello World <<<<<<<<<<<<<<<<<<<<

...的Xdebug會產生由於致命錯誤超過100個嵌套函數調用。然後我意識到,幾乎所有的markdown語法都可能以這種方式被濫用 - 在很多情況下是不經意的。

我通過將>>>>的實例替換爲>\>\>\>來解決了這個問題,但這似乎並不是一個合適的解決方案。

有沒有人遇到過這個?是否有更好的PHP腳本來格式化Markdown?

回答

0

使用Markdown時,正常路線是確保您之後應用了良好的HTML清理,然後根據需要添加黑客行爲。對於>>>>>一個簡單的黑客是:

preg_replace_callback("|>{5,}|", function($match) { 
    return preg_replace('|.|', '\>', $match[0]); 
}, $input); 

這增加了一個反斜槓逃脫是五個或更多字符長的>序列。

謝天謝地,有人努力編寫更堅實的Markdown解析器。一個這樣的努力是Sundown,基於Upskirt,它在C中,但具有PHP擴展:https://github.com/chobie/php-sundown

+0

或許'/(\ * | \ _ | \> | \){5,} /'防止嵌套粗體,斜體和塊狀?即使這並不是一個完整的解決方案。 – Tom

+0

是的,一個強大的Markdown解析器會很好。不過,這不是標準的做法。現在,在很多語言中,GIGO。 –

+0

...但使用一個GitHub使用可能會解決它。如果你可以使用PHP擴展,這可能值得一看:https://github.com/chobie/php-sundown –

相關問題