为什么目标字符串中的尖括号会否定第二个示例中的匹配文本。
$str = '[example1](example2)';
echo preg_replace('/\[(.*?)\]\((.*)\)/', '$2 $1', $str);
// output: example2 example1
$str = '[example1](<example2>)';
echo preg_replace('/\[(.*?)\]\((.*)\)/', '$2 $1', $str);
// output: example1
答案 0 :(得分:2)
<example2>
被浏览器解析为标记,因此不会显示。如果右键单击并查看源,您将在那里看到它。同样,如果您通过CLI运行它,您将看到正确的结果。
答案 1 :(得分:0)
$str = '[example1](<example2>)';
echo $str;
将为您生成[example1]()
,因为Web浏览器假定<example2>
是html标记。
当显示以下结果时也会发生同样的情况。这场比赛碰巧很好。
echo preg_replace('/\[(.*?)\]\((.*)\)/', '$2 $1', $str);