Php 我对预匹配偏移有问题

Php 我对预匹配偏移有问题,php,regex,Php,Regex,这就是模式。它仍然会得到第一张图像 preg_match_all('!http://.+\.(?:jpe?g|png|gif)!Ui', $content, $matches); preg_match_all('/\S+(list|of|bad|words)\S+/i', $content, $bads); $filtered = array_values(array_diff($matches[0], $bads[0])); $varcontent[$i]["conten

这就是模式。它仍然会得到第一张图像

preg_match_all('!http://.+\.(?:jpe?g|png|gif)!Ui', $content, $matches);

    preg_match_all('/\S+(list|of|bad|words)\S+/i', $content, $bads);

    $filtered = array_values(array_diff($matches[0], $bads[0]));

$varcontent[$i]["content"] = $content;
$varcontent[$i]["images"] = array_unique($filtered);
谢谢

我想当你说“它仍然获得第一张图像”时,你是说你想跳过第一次匹配?(如果不是,请更清楚)

这是因为偏移量不是“跳到第n个匹配”参数。它是一个“从字符串中的这个字符位置开始”参数。因此,您告诉它从字符串中的第一个字符开始,这实际上与根本不提供参数相同


“第二场比赛开始”没有“方便”的说法。只匹配全部而忽略$matches数组中的第一个匹配要容易得多

嗨,谢谢。如何在matches数组中忽略它?从匹配项[2]开始?不,因为您没有捕获任何内容,而且您需要完整的URL(完整模式),所以您需要在$matches[0]中查找所有匹配项。您的第一个匹配项是$match[0][0],第二个匹配项是$matches[0][1],第三个匹配项是$matches[0][2],等等。。因此,您可以像array_shift($matches[0])一样删除第一个匹配项,或者从$matches[0][1]开始计数。我建议您使用以下命令:echo“”;打印(匹配项);因此,您可以看到$matches的结构。我用一段代码更新了我的问题。。我认为数组的移位会起作用。我在数组值旁边尝试了它,但出现了错误。