我有一个字符串,例如:
84 - Pampers mid (4-9кг) №180 [Procter&Gamble] - 1978.00
我需要将其划分为array (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];
...
对于每个元素,依此类推。
但这是丑陋的方法,不是吗?我怎样才能用一种模式做到这一点?
发布于 2013-02-08 19:30:51
您可以将所有正则表达式合并为一个,以便一次将所有值提取到$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-08 19:37:45
就像这样
$x = '84 - Pampers mid (4-9кг) №180 [Procter&Gamble] - 1978.00';
preg_match_all('/(\d*)\ \-\ (.*)\ \[(.*)\]\ \-\ (.*)/', $x, $matches);
var_dump($matches);
https://stackoverflow.com/questions/14771499
复制相似问题