我有一个字符串,如:
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];
...
每个元素的等等。
但这是丑陋的方法,不是吗?我如何用一种模式制作它?
答案 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);