2015-01-21 149 views
0

我有一个字符串:字符串分割PHP的preg_match

$productList=" 
Saluran Dua(Bothway)-(TAN007); 
Memo-(T-Memo); 
7-Pak FBIP R-100.000-(F1R100); 
FBIP LOKAL 350 Mnt (R/N/M)-(FL350); 
FBIP SLJJ 30+300 Mnt (R)-(FJ30R) 
"; 

我想要的结果是这样的:

Array(
[0]=>Saluran Dua(Bothway) 
[1]=>Memo 
[2]=>7-Pak FBIP R-100.000 
[3]=>FBIP LOKAL 350 Mnt (R/N/M) 
[4]=>FBIP SLJJ 30+300 Mnt (R) 
); 

我用:

$separator = '#\;([a-zA-Z/0-9()\- ]*)\-#'; 
preg_match_all($separator, $productList, $match); 
$value=$match[1]; 

但结果:

Array(
[0] => Saluran Dua Arah(BothWay) 
[1] => Memo-(T 
[2] => 7-Pak FBIP R 
[3] => FBIP LOKAL 350 Mnt (R/N/M) 
); 

我希望有人能帮助我..

回答

0

你应该逃脱你的括号

$separator = '#([a-zA-Z0-9. \-\(\)/+]+)-\([a-zA-Z0-9. \-/]+\);{0,1}#'; 
+0

对不起,但它没有改变@HalayemAnis – DimasW 2015-01-21 12:10:56

+0

@DimasW我纠正了我的错误...希望能帮到 – 2015-01-21 13:33:26

+0

谢谢你... @HalayemAnis – DimasW 2015-01-22 02:37:48

0

使用preg_match_all功能。

$productList= <<< EOT 
Saluran Dua(Bothway)-(TAN007); 
Memo-(T-Memo); 
7-Pak FBIP R-100.000-(F1R100); 
FBIP LOKAL 350 Mnt (R/N/M)-(FL350); 
FBIP SLJJ 30+300 Mnt (R)-(FJ30R) 
EOT; 
preg_match_all('~(?m)^.*?(?=-\()~', $productList, $match); 
print_r($match[0]); 

输出:

它断言匹配必须跟破折号和一个左括号
Array 
(
    [0] => Saluran Dua(Bothway) 
    [1] => Memo 
    [2] => 7-Pak FBIP R-100.000 
    [3] => FBIP LOKAL 350 Mnt (R/N/M) 
    [4] => FBIP SLJJ 30+300 Mnt (R) 
) 

(?=-\()正超前。