如何使用一种模式拆分字符串?

时间:2013-02-08 11:25:51

标签: php regex split

我有一个字符串,如:

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];
...
每个元素的

等等。

但这是丑陋的方法,不是吗?我如何用一种模式制作它?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:-1)

类似

$x = '84 - Pampers mid (4-9кг) №180  [Procter&Gamble] - 1978.00';
preg_match_all('/(\d*)\ \-\ (.*)\ \[(.*)\]\ \-\ (.*)/', $x, $matches);
var_dump($matches);