【发布时间】:2014-07-27 20:48:41
【问题描述】:
我已经编写了一些代码来匹配和解析这种风格的 Markdown 链接:
[click to view a flower](http://www.yahoo.com/flower.html)
我有这段代码用于提取链接文本,然后是 url 本身,然后将它们粘贴到 A HREF 链接中。我很担心,也许我错过了让某人注入 XSS 的方法,因为我留下了相当数量的字符。这安全吗?
$pattern_square = '\[(.*?)\]';
$pattern_round = "\((.*?)\)";
$pattern = "/".$pattern_square.$pattern_round."/";
preg_match($pattern, $input, $matches);
$words = $matches[1];
$url = $matches[2];
$words = ereg_replace("[^-_@0-9a-zA-Z\.]", "", $words);
$url = ereg_replace("[^-A-Za-z0-9+&@#/%?=~_|!:.]","",$url);
$final = "<a href='$url'>$words</a>";
它似乎工作正常,它确实排除了一些包含分号和反斜杠的愚蠢 URL,但我不关心这些 URL。
【问题讨论】:
-
ereg 库已弃用多年,你真的应该切换到 preg。
-
有十几个 php markdown 解析器,为什么不使用其中一个。