2

我正在尝试在 WordPress 中制作类似简码之类的东西,并且我正在寻找一个正则表达式,它将采用类似的东西[title:This is a title]并将其转换为This is a title.

如果有人可以提出一种方法来采取类似的方法[code:some code]并将其转换为 array( [0] => 'code' [1] => 'some code') 或 array('code ' => '一些代码'

我已经尝试了一些我在这里和那里找到的不同的正则表达式,但它们似乎都不起作用。

谢谢

4

1 回答 1

4
preg_replace('/\[.*?:(.*?)\]/', '$1', $str);

键盘

如果您想捕获冒号之前的文本,只需将其括在括号中,它将成为捕获组 1。

更新

我正在寻找使用preg_match而不是preg_replace

您想使用preg_match_all()来获取所有匹配项。

preg_match_all('/\[(.*?):(.*?)\]/', $str, $matches);

爱迪生

或者,您可以给他们命名捕获组。

preg_match_all('/\[(?P<identifier>.*?):(?<body>.*?)\]/', $str, $matches);

爱迪生

于 2011-05-19T02:35:54.020 回答