Preg_Match仅返回一次相同的元素

2022-03-29 00:00:00 regex php preg-match
我正在处理一个字符串,并处理!--和--!之间所有元素。但只有独特的元素才是过程。当我有!--例子--!在文本中再往下看!--示例--!,忽略第二个。

代码如下:

while ($do = preg_match("/!--(.*?)--!/", $formtext, $matches)){

我知道preg_Match_all,但需要使用preg_Match来执行此操作。

有帮助吗?提前感谢!

php>

解决方案

您将希望php仅在前一个匹配项之后查找匹配项。为此,您需要使用PREG_OFFSET_CAPTURE标志捕获字符串偏移量。

示例:

$offset = 0;
while (preg_match("/!--(.*?)--!/", $formtext, $match, PREG_OFFSET_CAPTURE, $offset))
{
    // calculate next offset
    $offset = $match[0][1] + strlen($match[0][0]);

    // the parenthesis text is accessed like this:
    $paren = $match[1][0];
}

有关详细信息,请参阅preg_match文档。

相关文章