0

重複の可能性:
HTML テキストからの製品価格の照合

常にではありませんが、通常は html ページのソースである文字列があります。

文字列内から価格を抽出したい。これは正確な科学ではなく、通貨記号の配置などの組み合わせは無限ですが、何もないよりはましです。

文字列の例:

$string = 'the price is <tag>&#163;10.00</tag>';

したがって、次の正規表現から始めます。

$price = preg_match('#(?:\$|\£|\€|\&pound;|\&\#163;)(\d+(?:\.\d+)?)#', $string);

もちろん、これは最初の文字のみを返します。

私の質問は、特定の文字が見つかるまで $string を使い続ける方法はありますか? 例 < またはスペース? 見つかったものを返します。この場合は 10.00 になります。

これは実行可能な方法ですか、それともより良い方法がありますか?

上記の例を次に示します。

http://ideone.com/u8erb

4

2 に答える 2

0

通貨が変わる可能性があるので、preg_match_allと一緒に使用するのはどうですか? (\d+(?:\.\d+)?)(?=<\s*/\s*tag\s*>)正規表現を使用したソリューションは、一連の仮定に依存するため、最初にそれらを理解することをお勧めします。

  • これらの価格は特定の div 内で発生していますか?
  • 可能な値の完全なセットは何ですか?

将来失敗する一般的な理由は、考慮していない小さな変更があったためです。これらの価格が ID とクラスのタグで発生している場合は、代わりに XHTML パーサーの使用を検討してください。

http://php.net/manual/en/book.dom.php

http://simplehtmldom.sourceforge.net/

于 2012-10-02T10:20:36.690 に答える