2011年2月 2日

[PHP-users 35474]preg_match_allについて

こんばんは。
いつもお世話になります。

以下のようなデータがあります。

$data_source="item_no:123456
商品名:あいうえお
priceA:520


item_no:112235
商品名:かきくけこ
priceA:380
priceB:200

item_no:113358
商品名:さしすせそ
priceA:650
priceB:340

item_no:223345
商品名:たちつてと
priceA:700

item_no:333321
商品名:なにぬねの
priceA:1230
priceB:830

item_no:563345
商品名:はひふへほ
priceA:210
priceB:110

";


priceBのデータがあるものだけ、
item_no
商品名
priceA
priceB
のデータを抽出したいと思って

$data_source = preg_replace('/(\r|\n|\t)/', '', $data_source);
preg_match_all('/item_no:(.*?)商品名:(.*?)priceA:(.*?)priceB:(.*?)/s',
$data_source, $matches, PREG_SET_ORDER);

としているのですが、期待しているようにマッチしてくれません。

priceBのない1番目のitem_no:123456から2番目のitem_no:112235のpriceB:200ま
で連続して
マッチしてしまいます。
こちらとしては、最短のitem_no:112235からpriceB:200までをマッチさせたいの
ですが、どうやっても
前のitem_no:123456からになってしまいます。
また、その後に関しても同じように、4番目のデータ"item_no:223345"は5番目の
priceB:830までマッチ
してしまいます。

基本的なところが理解できていないようで、試行錯誤で時間だけを費やしており
ます。
お手数ですが、ご教授よろしくお願いします。
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 : 2011年2月 2日 05:13
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/101718
トラックバック
コメント
コメントする




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