PHPについて質問です。


preg_match関数で 

<td property="auction:StartPrice">1,000 円</td>

の 1,000 を取り出して数字に変えたいと考えています。

自分で作ってみたのですがうまく出来ません。

preg_match('|<td property="auction:StartPrice">(.*?)¥(円¥)</td>|s', $html, $matches) ;

詳しい方おりましたら見ていただけないでしょうか。

よろしくお願いいたします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2009/10/02 18:23:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:makeworld No.1

回答回数75ベストアンサー獲得回数23

ポイント100pt

「\(」と「\)」は、「(」や「)」そのものを示します。元のHTMLには括弧が存在しないためマッチしません。

下記で抽出できると思います。

preg_match('|<td property="auction:StartPrice">(.*?) 円</td>|s', $html, $matches);
id:aiomock

ご回答ありがとうございます。

2009/10/02 00:50:23
  • id:aiomock
    試してみましたが無理でした。

    preg_match('|<td property="auction:StartPrice">(.*?) 円</td>|s', $html, $matches);
    $start_price = strtr($matches[1], array("," => ""));

    誤りがあるのでしょうか?
  • id:makeworld
    こちらでは抽出できているので、もしかすると、phpのソースコードと、$html内の文字コードが違っているのかもしれません。

    $reg = '|<td property="auction:StartPrice">(.*?) 円</td>|s';
    $reg = mb_convert_encoding($reg, 'EUC-JP', 'auto');
    preg_match($reg, $html, $matches);

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません