gpt4 book ai didi

php - 正则表达式匹配类似 bbcode 的标签之间的内容

转载 作者:行者123 更新时间:2023-12-04 10:12:06 25 4
gpt4 key购买 nike

我正在研究 bbcodes 的自定义实现(基本上是 Wordpress 短代码)。为此,我需要匹配可以在两个类似 bbcode 的标签之间找到的内容。

例如:

[example]The content I want to retrieve[/example]

问题是这些标签基本上可以是任何东西。这次可能是例子,但很可能是这样的:
[hello_world with="attribute"]And some [more-complex] content[/hello_world]

我唯一需要的是 hello_world 简码中更复杂的内容。我找到了一个可以实现这一点的正则表达式,我稍微修改了它以满足我的需要:
(?<=\[.*\])(.*?)(?=\[.*\])

但是当在以下代码中使用时:
<?php
$tag = '[test_tag with="attributes"]Content I [want] To capture[/test_tag]';

// Get the content of the shortcode.
preg_match('~(?<=\[.*\])(.*?)(?=\[.*\])~', $tag, $shortcodeContent);
var_dump($shortcodeContent);

我收到以下错误:
Warning: preg_match(): Compilation failed: lookbehind assertion is not fixed length at offset 10 

是否有一种简单的方法可以修复此错误?我知道发生这种情况是因为我使用了未指定长度的“全部捕获”模式。但我对如何解决这个问题有点困惑。 (我真的不是一个正则表达式向导)

最佳答案

如果我没有误解你的问题 ,那么您可以使用此方式来捕获内部文本内容 regex .

<?php

$re = '/(?<=\])(.*?)(?=\[\/)/m';
$str = '[test_tag with="attributes"]Content I [want] To capture[/test_tag]';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

// Print the entire match result
echo $matches[0][0];
?>

工作演示: https://3v4l.org/qgcNg

关于php - 正则表达式匹配类似 bbcode 的标签之间的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61286556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com