我在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>
返回一个数组(在PHP中带有preg_match_all),包含3组:
1/70
2 /
</span><span style="display:none">1</span><span>
3 /,89
我想排除第2组并合并1&amp; 3。
所以我也试过了:
<span class="red"><span>([0-9]+)(?:<\/span><span style="display:none">1<\/span><span>)(,[0-9]+)<\/span>
但它返回:
如何合并这两个组?
非常感谢您的回答,我会疯狂地寻找这个正则表达式! :)
祝你有个美好的一天!
答案 0 :(得分:0)
只需匹配用普通<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