用于从方括号获取信息的正则表达式

发布于 2024-11-08 19:37:02 字数 352 浏览 0 评论 0原文

我正在尝试在 WordPress 中制作类似短代码的内容,并且我正在寻找一个正则表达式,它将采用类似 [title:This is a title] 的内容并将其转换为 This is标题

如果有人可以建议一种方法来获取类似 [code:some code] 的内容并将其转换为以下形式的数组,这也会很有用 大批( [0] => '代码' [1] => '一些代码') 或者 大批( '代码' => “一些代码”

我尝试了一些不同的正则表达式,但它们似乎都不起作用。

谢谢

I'm attempting to make something like shortcodes in WordPress, and I'm looking for a regex that will take something like [title:This is a title] and turn it to just This is a title.

It would also be useful if someone could suggest a way to take something like [code:some code] and turn that into an array in the form of
array(
[0] => 'code'
[1] => 'some code')
or
array(
'code' => 'some code'

I've tried a few different regexes I've found here and there, but none of them seem to work.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

你是暖光i 2024-11-15 19:37:02
preg_replace('/\[.*?:(.*?)\]/', '$1', $str);

键盘

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

更新

我希望使用 preg_match 而不是 preg_replace

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

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

Ideone

或者,您可以为它们指定命名的捕获组。

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

Ideone

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

CodePad.

If you wanted to capture the text before the colon, simply wrap it in parenthesis and it will become capturing group 1.

Update

I'm looking to use preg_match instead of preg_replace

You'd want to use preg_match_all() to get all matches.

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

Ideone.

Alternatively, you could give them named capturing groups.

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

Ideone.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文