2

文字列があるとしましょう

$what = "1 x Book @ $20 32 x rock music cd @ $400 1 x shipping to india @ $10.5";

そして、出力が

Array 
(
    [0] => 1 x Book @ $20
    [1] => 32 x rock music cd @ $400
    [2] => 1 x shipping to india @ $10.50
)

以下のようなことを考えていますが、どの正規表現を使うべきかわかりません!

 $items = preg_split('/[$????]/', $what);

前もって感謝します

4

1 に答える 1

3

これを試して :

$str = '1 x Book @ $20 32 x rock music cd @ $400 1 x shipping to india @ $10.5';
preg_match_all('/(?P<match>\d+\s+x\s+[\w\s]+\s+@\s+\$[\d\.]+)/',$str,$match);

echo "<pre>";
print_r($match['match']);

出力:

Array
(
    [0] => 1 x Book @ $20
    [1] => 32 x rock music cd @ $400
    [2] => 1 x shipping to india @ $10.5
)

別の解決策

Dream Eaterのコメントによると:それを書くためのより小さな方法:(。*?\ $ \ d +)\s。–ドリームイーター3分前

最後に追加*したところ、問題なく動作します。

$str = '1 x Book @ $20 32 x rock music cd @ $400 1 x shipping to india @ $10.5';
preg_match_all('/(.*?\$\d+)\s*/',$str,$match);

echo "<pre>";
print_r($match);

参照:http://php.net/manual/en/function.preg-match.php

于 2013-03-27T07:26:18.507 に答える