有没有办法阻止Markdown嵌套滥用?

时间:2011-08-23 23:00:39

标签: php markdown

我正在使用PHP Markdown脚本:http://michelf.com/projects/php-markdown/

我今天注意到,如果有人发布包含以下文字的消息:

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

...由于超过100个嵌套函数调用,Xdebug将产生致命错误。然后我意识到几乎任何降价语法都会以这种方式被滥用 - 在许多情况下是无意中滥用。

我通过将>>>>的实例替换为>\>\>\>来解决问题,但这似乎不是一个适当的解决方案。

有没有人碰到过这个?是否有更好的PHP脚本来格式化Markdown?

1 个答案:

答案 0 :(得分:0)

使用Markdown,正常的路线是确保您之后应用了良好的HTML清理,然后根据需要添加黑客。对于>>>>>,一个简单的黑客就是:

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

这会为>的转义序列添加一个反斜杠,其长度为五个或更多字符。

值得庆幸的是,我们正在努力编写更加可靠的Markdown解析器。一个这样的努力是基于Upskirt的日落,它在C中,但有一个PHP扩展:https://github.com/chobie/php-sundown