0

次のような文字列があります。

84 - Pampers mid (4-9кг) №180  [Procter&Gamble] - 1978.00

そして、次のような配列 (php) に分割する必要があります。

[0] 84
[1] Pampers mid (4-9кг) №180
[2] Procter&Gamble
[3] 1978.00

その瞬間、私はそれを段階的にやっています:

$pattern = '/\[(.*)\]/';//producer
preg_match($pattern, $subject, $matches_producer);
$provider=$matches_producer[1];
...

など、各要素について。

しかし、これは醜い方法ですね。1パターンでどうやって作るの?

4

2 に答える 2

2

すべての正規表現を1つに組み合わせて、すべての値を$match一度に抽出できます。

$string = "84 - Pampers mid (4-9кг) №180  [Procter&Gamble] - 1978.00";
preg_match('/(\d+) - (.*) \[(.*)\] - (\d+.\d+)/', $string, $match);

このコードを実行した後、次のもの$matchが含まれます。

Array
(
    [0] => 84 - Pampers mid (4-9кг) №180  [Procter&Gamble] - 1978.00
    [1] => 84
    [2] => Pampers mid (4-9кг) №180 
    [3] => Procter&Gamble
    [4] => 1978.00
)

配列にこれらの文字列がたくさんある場合は、preg_match_allの使用を検討してください。

于 2013-02-08T11:30:50.700 に答える
-1

何かのようなもの

$x = '84 - Pampers mid (4-9кг) №180  [Procter&Gamble] - 1978.00';
preg_match_all('/(\d*)\ \-\ (.*)\ \[(.*)\]\ \-\ (.*)/', $x, $matches);
var_dump($matches);
于 2013-02-08T11:37:45.280 に答える