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

tk tk @ ss.iij4u.or.jp
2010年 6月 16日 (水) 17:56:09 JST


Setoさん、柳本さん、たけぐちさん

早速のご回答ありがとうございます。
大感謝!!
(昨日からずっと試行錯誤してました)

そうですね、いっぱつでやろうとすると無理な場合は、
段階的にするのが良いですね。

非常に勉強になりました。
ありがとうございました。
tk



Ryo Takeguchi wrote:
> こんにちは。
> たけぐちです。
> 
> セールは考えないとした場合は
> preg_match_all("/<a name=\"(\d*)\" href.*?<span
> class=\"teika\">定価:(.*)円<\/span><br \/>/s", $html_source, $matches,
> PREG_SET_ORDER);
>> /s を /Us
>> preg_match_all("/<a name=\"(\d*)\" href.*<span
> class=\"teika\".*定価:(.+)円<\/span><br \/>/Us", $html_source, $matches,
> PREG_SET_ORDER);
> で一応でます。
> 
> 正規表現で全部引っ張ろうとするとぐちゃぐちゃになってしまう(自分だけかもしれませんが)ので、Setoさんのおっしゃる通りデータを加工したほうがいいかと。
> 
> セールが有る無しだけで記述の揺れがないと考えれば、
> 
> <a から 次の<a までの間が一つのデータと考え分割
> 
> それを繰り返しで
> spanで指定されているclassと
> <span></span>含まれる文字列を取得
> 
> 必要なものだけとりだしてハッシュなりに入れる。
> 
> 対象の内容によりけりですが、htmlは改行の意味が無く処理する上で
> 邪魔なことがあるので
> $html_source=preg_replace("/\n/",'',$html_source);
> などで捨ててます。
> あ、preg_replaceである必要はないです。好みです。
> 
> 正規表現はマッチする最初のほうからちょこちょこ広げていったほうが作りやすいかと思います。
> 


PHP-users メーリングリストの案内