尝试编写一个脚本,用户输入[link](http://www.example.com)并获取一个名为“link”的超链接,其中包含“http://www.example.com”作为href 。这是我的代码:
if(preg_match("/\[[a-zA-Z0-9]*\]([a-zA-Z0-9]*)/", $input))
{
$input = preg_replace("/\[([a-zA-Z0-0-9]*)\](([a-zA-Z0-9]*))/", "<a href='$2'>$1</a>", $input);
}
我一直在追回的是[link](http://www.example.com)(http://www.example.com)
。知道我做错了吗?
答案 0 :(得分:1)
你忘了逃避字面括号(因此(([a-zA-Z0-9]*))
部分只是匹配空字符串)。
此外,如果你想匹配链接,你需要至少允许斜线,冒号和点:
$input = preg_replace("%\[([A-Z0-9]*)\]\(([A-Z0-9/:.]*)\)%i", "<a href='$2'>$1</a>", $input);
或可能
$input = preg_replace("%\[([A-Z0-9]*)\]\((https?://[A-Z0-9/.]*)\)%i", "<a href='$2'>$1</a>", $input);