0

为什么目标字符串中的尖括号会否定第二个示例中的匹配文本。

$str = '[example1](example2)';
echo preg_replace('/\[(.*?)\]\((.*)\)/', '$2 $1', $str);

// output: example2 example1

$str = '[example1](<example2>)';
echo preg_replace('/\[(.*?)\]\((.*)\)/', '$2 $1', $str);

// output: example1
4

2 回答 2

2

<example2>被浏览器解析为标签,所以它不会显示出来。如果您右键单击并查看源代码,您将在那里看到它。同样,如果您通过 CLI 运行它,您将看到正确的结果。

于 2013-04-01T23:23:37.047 回答
0
$str = '[example1](<example2>)';


echo $str;

将为您生成[example1](),因为 Web 浏览器假定<example2>是 html 标记。显示以下结果时也会发生同样的情况。这场比赛碰巧还不错。

echo preg_replace('/\[(.*?)\]\((.*)\)/', '$2 $1', $str);
于 2013-04-01T23:28:29.890 回答