0

我在 Stackoverflow 中搜索了许多线程,但没有找到与我的案例相关的任何内容。

这是源文本:

<span class="red"><span>70</span><span style="display:none">1</span><span>,89</span> € TTC<br /></span>

我想用正则表达式提取 70,89。

所以我尝试了:

<span class="red"><span>([0-9]+)(<\/span><span style="display:none">1<\/span><span>)(,[0-9]+)<\/span>

它返回一个包含 3 个组的数组(在 PHP 中使用 preg_match_all):

1/ 70

2/

</span><span style="display:none">1</span><span>

3/ ,89

我想排除第 2 组并合并 1 和 3。

所以我也试过:

<span class="red"><span>([0-9]+)(?:<\/span><span style="display:none">1<\/span><span>)(,[0-9]+)<\/span>

但它返回:

  1. 70
  2. ,89

如何合并两个组?

非常感谢您的回答,我会疯狂地寻找这个正则表达式!:)

祝你有美好的一天 !

4

1 回答 1

0

只需匹配用 plain 包裹的数字<span>

$str = '<span class="red"><span>70</span><span style="display:none">1</span><span>,89</span> € TTC<br /></span>';

if (preg_match_all('#<span>([,\d]+)</span>#', $str, $matches)) {
    echo join('', $matches[1]);
}
// output: 70,89
于 2013-03-28T13:41:14.193 回答