繁体   English   中英

PHP:正则表达式中的剩余文本

[英]PHP: Leftover text in Regular Expression

尝试编写一个脚本,用户在该脚本中输入[link](http://www.example.com)并获取以“ http://www.example.com”为href的名为“ link”的超链接。 这是我的代码:

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) 知道我在做什么错吗?

您忘记了转义括号(因此(([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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM