gpt4 book ai didi

php - 使用 preg_match_all() 或更好的函数获取标签之间的所有文本?

转载 作者:行者123 更新时间:2023-12-04 06:51:28 25 4
gpt4 key购买 nike

2010-June-11
<remove>2010-June-2</remove>
<remove>2010-June-3</remove>
2010-June-15
2010-June-16
2010-June-17
2010-June-3
2010-June-2
2010-June-1

我正在尝试查找 <remove> 之间的所有实例标签

这就是我所拥有的:
$pattern = "/<remove>(.*?)<\/remove>/";
preg_match_all($pattern, $_POST['exclude'], $matches);

foreach($matches as $deselect){
foreach ($deselect as $display){
echo $display."<br />";
}
}

这是它返回的内容:
2010-June-2
2010-June-3
2010-June-2
2010-June-3

为什么它会加倍,我该如何防止?

最佳答案

不要使用正则表达式来解析 xml/html...

话虽如此,问题在于匹配结构如下所示:

array(
0 => array('whole match1', 'whole match 2', 'whole match 3'),
1 => array('subpattern match 1', 'subpattern match 2', 'subpattern match 3'),
);

所以不要做你的foreach,做一个:
if (!empty($matches)) { 
foreach ($matches[1] as $value) {
echo $value;
}
}

或使用 PREG_SET_ORDER标记为 preg_match_all,这将导致一个数组结构,如:
array( 
0 => array('whole match1', 'subpattern match 1'),
0 => array('whole match2', 'subpattern match 2'),
0 => array('whole match3', 'subpattern match 3'),
);

那么你的 foreach 将变成:
if (!empty($matches)) { 
foreach ($matches as $match) {
echo $match[1];
}
}

关于php - 使用 preg_match_all() 或更好的函数获取标签之间的所有文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3063704/

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