2010年6月16日

[PHP-users 35236] Re:preg_match_allによる要素の抽出

柳本です。

$html_source = preg_replace('/(\r|\n)/', '', $html_source);
preg_match_all('/<a name=\"(\d*?)\" href.*?<span class=\"teika\">定価:
(.*?)円<\/span><br \/>(<span class=\"sale\">セール価格:(.*?)円<\/span>
<br \/>)?/s', $html_source, $matches, PREG_SET_ORDER);
for($i=0;$i < count($matches);$i++)
{

echo '商品番号:'.$matches[$i][1]."\n";
echo '定価:'.$matches[$i][2]."\n";
echo 'セール価格:'.$matches[$i][4]."\n";
echo "\n";
}

こんな感じでどうでしょうか?

(2010/06/16 16:00), tk wrote:
> お世話になります。
> 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
>

_______________________________________________
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日 17:22
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/96395
トラックバック
コメント
コメントする




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