2013-02-08 32 views
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]; 
... 

等等每个元素。

但这是丑陋的方法,不是吗?我怎样才能做到这一点?

回答

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

无需定义$匹配。无论如何它会被初始化 – 2013-02-08 11:33:58

+0

@YourCommonSense谢谢,我不知道。我在答案中改变了它。 – MarcDefiant 2013-02-08 11:37:33

+0

谢谢。这是我需要的。 – 2013-02-08 11:46:22

-1

类似于

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