2010年6月16日

[PHP-users 35234]preg_match_allによる要素の抽出

お世話になります。
tkと申します。

HTMLソースから、必要なデータを抜き出したいのですが、
改行や、各データの要素が同じでないことで、苦戦しています。
ご教授よろしくお願い申し上げます。

各商品のデータは、

「商品番号(商品画像)、定価、セール価格」
のブロックとして、HTMLに記述されています。
但し、セール価格は、ないものもあります。

HTMLソースの概略は以下のようなものです。
====================
<a name="987654" href="http://www.hogehoge.com/987654"><img
src="http://www.hogehoge.com/987654.jpg" /></a>
<span class="teika">定価: 12,000円</span><br />
<span class="sale">セール価格: 9,000円</span><br />
hogehoge
hogehoge
hogehoge
<a name="987789" href="http://www.hogehoge.com/987789"><img
src="http://www.hogehoge.com/987789.jpg" /></a>
<span class="teika">定価: 15,000円</span><br />
hogehoge
hogehoge
<a name="938235" href="http://www.hogehoge.com/938235"><img
src="http://www.hogehoge.com/938235.jpg" /></a>
<span class="teika">定価: 9,000円</span><br />
<span class="sale">セール価格: 7,500円</span><br />
hogehoge
hogehoge
<a name="988822" href="http://www.hogehoge.com/988822"><img
src="http://www.hogehoge.com/988822.jpg" /></a>
<span class="teika">定価: 10,000円</span><br />
hogehoge
hogehoge
hogehoge
====================

ここから、各商品の
nameのところの「商品番号」
「定価」
「セール価格」
を抜き出して

商品番号:987654
定価:12,000
セール価格:9,000

商品番号:987789
定価:15,000
セール価格:

商品番号:938235
定価:9,000
セール価格:7,500

商品番号:988822
定価:10,000
セール価格:

のように表示したいのです。

preg_match_all("/<a name=\"(\d*)\" href.*?<span class=\"teika\">定価:
(.*)円<\/span><br \/>/s", $html_source, $matches, PREG_SET_ORDER);

として、商品番号と定価のセットだけでも抜き出そうとしているのですが、不要
な部分もそのまま抜き出されてきます。
また、セール価格のあるもの、ないものをどのように組み込めば良いのかが、わ
からず困っています。
(以下全体があるかないか不明で、あれば、金額を抜き出す)
<span class="sale">セール価格: (.*)円</span><br />

ご教授よろしくお願い申し上げます。
tk


_______________________________________________
PHP-users mailing list PHP-users@xxxxx
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3


投稿者 xml-rpc : 2010年6月16日 16:00
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/96393
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。