首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用一种模式拆分字符串?

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

Stack Overflow用户
提问于 2013-02-08 19:25:51
回答 2查看 517关注 0票数 0

我有一个字符串,例如:

代码语言:javascript
运行
复制
84 - Pampers mid (4-9кг) №180  [Procter&Gamble] - 1978.00

我需要将其划分为array (php),如下所示:

代码语言:javascript
运行
复制
[0] 84
[1] Pampers mid (4-9кг) №180
[2] Procter&Gamble
[3] 1978.00

在那一刻,我正在一步步地做这件事:

代码语言:javascript
运行
复制
$pattern = '/\[(.*)\]/';//producer
preg_match($pattern, $subject, $matches_producer);
$provider=$matches_producer[1];
...

对于每个元素,依此类推。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-08 19:30:51

您可以将所有正则表达式合并为一个,以便一次将所有值提取到$match中:

代码语言:javascript
运行
复制
$string = "84 - Pampers mid (4-9кг) №180  [Procter&Gamble] - 1978.00";
preg_match('/(\d+) - (.*) \[(.*)\] - (\d+.\d+)/', $string, $match);

运行此代码后,$match包含:

代码语言:javascript
运行
复制
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

票数 2
EN

Stack Overflow用户

发布于 2013-02-08 19:37:45

就像这样

代码语言:javascript
运行
复制
$x = '84 - Pampers mid (4-9кг) №180  [Procter&Gamble] - 1978.00';
preg_match_all('/(\d*)\ \-\ (.*)\ \[(.*)\]\ \-\ (.*)/', $x, $matches);
var_dump($matches);
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14771499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档