0

我正在尝试使用具有诸如 结构的 php 解析链接[google](http://google.com),到目前为止我已经得到了这个:

"/\[(.+?)\]((.+?\))/is" 

我无法工作的唯一部分是带括号')'的部分。

任何帮助都会很棒!

[编辑]

@jari - 这是代码的一部分:

$find = array(
    "@\n@", 
    "/[**](.+?)[**]/is",
    "/\[(.+?)\]\((.+?)\)/is"
    );

$replace = array(
    "<br />",
    "<strong>$1</strong>",
    "<a href\"$1\" target=\"_blank\" rel=\"no follow\"></a>"
    );

$body = htmlspecialchars($body); 
$body = preg_replace($find, $replace, $body); 
return $body; 
4

2 回答 2

1

括号是一个特殊字符,通常在表达式中标记子模式,因此您需要对它们进行转义(就像您对方括号所做的那样,顺便说一句):

"/\[(.+?)\]\((.+?)\)/is"
于 2013-02-17T22:01:57.043 回答
0

它应该看起来像:

\[([^\]]+)]\([^)]+\)

我们使用[^x]which 表示,匹配任何不是x.
我们已经使用它在第一组中捕获[不是]. 第二组使用[^)]+. 任何不是).

于 2013-02-17T22:03:57.030 回答