0
<strong class="tb-rmb-num"><em class="tb-rmb">¥</em>39.00</strong>

通貨記号なしで数字のみを取得しようとしています

私の現在のコードは

$ret = $html->find('strong[class=tb-rmb-num]');
echo $ret[0];

これにより、記号 ¥39.00 で取得されます。アドバイスをお願いします。ありがとうございます。

4

1 に答える 1

3

PHPで:

$string = '¥39.00';

if(preg_match('/([\d\.]+)/', $string, $m)){
    echo $m[1];
} 

どの出力:

39.00

わかりました、これを分解します:

preg_match('/([\d\.]+)/', $string, $m)

preg_match は、正規表現を使用して特定の文字列内のパターン マッチを検索できるようにする php 関数です。

この場合の正規表現は /([\d.]+)/ です。

  • / .. / は、式を含む区切り文字です
  • ( .. ) はグループであり、グループ内で見つかった一致はすべて $m に格納されます。グループは 1 つしかない (かっこのセットが 1 つしかないなど) ため、この最初のグループの一致は $m[1] を介して取得されます。
  • [ .. ] は文字クラスです。
  • \d は、0 ~ 9 のすべての数字のショートカットです。
  • 。はリテラルを意味します。文字 (正規表現の . には特別な意味があるため、 \ でエスケープされますが、特別な意味ではなく、リテラル . を表す必要があります)
  • 文字クラス [..] の後の + は、クラス内の文字を可能な限り連続して一致させることを意味します。

この例の $string の値は ¥39.00 に設定されています。私の例の $string を $ret[0] に置き換えてください。

$m は、グループの一致を格納するための変数プレースホルダーです (上記で説明)

全体が if ステートメントでラップされているため、パターン マッチが見つかった場合は何かを実行でき、そうでない場合は別のことを実行できます。

さらに参照するには:

  1. http://php.net/manual/en/function.preg-match.php
  2. http://webcheatsheet.com/php/regular_expressions.php
于 2013-06-18T12:36:45.560 に答える