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];
...

对于每个元素,依此类推。

但这是丑陋的方法,不是吗?我怎样才能用一种模式制作它?

4

2 回答 2

2

您可以将所有正则表达式组合成一个以$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 回答