gpt4 book ai didi

php - preg_match() 设置空字符串或不设置的规则是什么?

转载 作者:行者123 更新时间:2023-12-02 21:56:13 25 4
gpt4 key购买 nike

考虑以下代码:

preg_match('/(\d)(\d?)/', '1', $matches);
var_export($matches);

它输出:

array (
0 => '1',
1 => '1',
2 => '',
)

所以可选的[2]条目已设置,但为空字符串。

但是,我记得过去曾见过这样的情况:最后使用时,可选捕获组未设置(数组将停止在 [1] )。

我是在做梦吗,还是在某些情况下无法设置该条目

我知道我可以使用 if (! isset($matches[2]) || $matches[2] == '')如果我想确定的话,但这会不必要地使代码变得困惑。

最佳答案

这取决于您是否将整个捕获组设置为可选。

如果您将组设置为必需,但允许它匹配空字符串,那么匹配将始终被设置,但可能为空:

preg_match('/(\d)(\d?)/', '1', $matches); // $matches[2] === ''

如果通过将量词 ? 移到括号之外来使该组成为可选,则将有条件地设置匹配:

preg_match('/(\d)(\d)?/', '1', $matches); // no $matches[2]

关于php - preg_match() 设置空字符串或不设置的规则是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17744076/

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