gpt4 book ai didi

php preg_match_all 返回数组数组

转载 作者:可可西里 更新时间:2023-11-01 00:30:43 24 4
gpt4 key购买 nike

我想替换一些模板标签:

$tags = '{name} text {first}';
preg_match_all('~\{(\w+)\}~', $tags, $matches);
var_dump($matches);

输出是:
array(2) { 
[0]=> array(2) {
[0]=> string(6) "{name}"
[1]=> string(7) "{first}"
}
[1]=> array(2) {
[0]=> string(4) "name"
[1]=> string(5) "first"
}
}

为什么里面有2个数组?如何实现仅第二个?

最佳答案

那是因为您的正则表达式可能有多个匹配组 - 如果您有更多 (..),您的数组中就会有更多条目。第一个[0] 总是整个比赛。

如果您想要数组的其他顺序,您可以使用 PREG_SET_ORDER 作为 preg_match_all 的 4. 参数。这样做会导致以下结果

array(2) { 
[0]=> array(2) {
[0]=> string(6) "{name}"
[1]=> string(7) "name"
}
[1]=> array(2) {
[0]=> string(4) "{first}"
[1]=> string(5) "first"
}
}

如果您在 foreach 循环中循环结果,这可能会更容易。

如果您只对第一场比赛感兴趣 - 您应该使用默认的 PREG_PATTERN_ORDER 并只使用 $matches[1]

关于php preg_match_all 返回数组数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32797563/

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