2011-08-23 64 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 –

相关问题