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

2 つのグループを結合するにはどうすればよいですか?

ご回答ありがとうございます。この正規表現の検索に夢中になるでしょう。:)

良い一日を過ごしてください !

4

1 に答える 1

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
于 2013-03-28T13:41:14.193 に答える