gpt4 book ai didi

php - preg_match_all 打印*所有*匹配项

转载 作者:行者123 更新时间:2023-12-05 09:25:32 26 4
gpt4 key购买 nike

我需要使用 preg_match_all 打印所有匹配项。

$search = preg_match_all($pattern, $string, $matches);

foreach ($matches as $match) {
echo $match[0];
echo $match[1];
echo $match[...];
}

问题是我不知道我的字符串中有多少个匹配项,即使我知道并且如果是 1000 个,那么键入所有那些 $match[]'

最佳答案

$match[0]$match[1] 等项目不是单独的匹配项,它们是“捕获”。

无论有多少匹配项,$matches 中的条目数都是恒定的,因为它基于您 搜索的内容,而不是结果。总是至少有一个条目,搜索模式中的每对捕获括号再加一个条目。

例如,如果您这样做:

$matches = array();
$search = preg_match_all("/\D+(\d+)/", "a1b12c123", $matches);
print_r($matches);

即使找到了三个匹配项,匹配项也将只有两个项目。 $matches[0] 将是一个包含“a1”、“b12”和“c123”(每个项目的完整匹配项)的数组,$matches[1] 将仅包含每个项目的第一个捕获,即“1”、“12”和“123”。

我想你想要的更像是:

foreach ($matches[1] as $match) {
echo $match;
}

这将从每个匹配的字符串中打印出第一个捕获表达式。

关于php - preg_match_all 打印*所有*匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1597714/

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