0

本质上,我需要一种方法来搜索一大串文本以查找多个出现的两个单独的类似 BBCode 的标签,并获取它们之间的数据。例如:

$string = "Referenced section of text[ref]Reference text[/ref]";
$getStringBetween = gsb($string, "[ref]", "[/ref]";
echo $getStringBetween; //Would output "Reference Text"

我曾经preg_match_all搜索过这个字符串,一开始还可以,但我发现它相对不可靠。它工作的时间很好,但不久之后它会中断并输出第一个引用标记和最后一个数组键之间的所有内容。

另一个大问题是 [ref][/ref] 标签需要在自己的行上才能工作。

我的故事的道德,我需要一些方法来查找两个特定的文本字符串并使用 PHP 获取它们之间的数据。

4

1 回答 1

1

您是否尝试过使用 preg_match_all 进行“最小化”?Preg 匹配通常是贪婪的(会尽可能多地抓取符合条件的),但您可以更改为最小。使用 .+? 或者 。*?作为比赛。

如果您想跨多行匹配,请将 m 用于多行 - 根据问题不确定是否需要它,但它可能是您需要的。

以下应该为您做:

preg_match_all('#\[ref\](.*?)\[/ref\]#m', $string, $aMatches);
于 2012-11-22T06:15:22.463 回答