【问题标题】:PHP - split a string into an array of numerical keysPHP - 将字符串拆分为数字键数组
【发布时间】:2014-02-21 13:27:17
【问题描述】:

我想将 PHP 中的字符串拆分为“名称”部分(字符串)和“键”部分(整数数组)。

示例输入:

 $input = "Sum(1, 5, 7)";

期望的输出:

 $name = "Sum";
 $keys = [1, 5, 7];

我一直在研究explode,str_split preg_split,我确信有很多可能的实现。最优雅的解决方案是什么?

【问题讨论】:

  • 呃,Sum(1, Sum(1, 5, 7), 7) 呢?预期的输出是多少?
  • 是否总是采用“word”“bracket”“comma delimited numbers”“bracket”的格式?
  • @Grim,好问题。是的,我希望它始终是“单词”“括号”“逗号分隔数字”“括号”。 HamZa 的示例是无效(非法)输入。该字符串位于配置文件中,因此我可以控制意外输入。
  • @MMacdonald 输入是Sum(1, 5, 7) 还是有几个“部分”,例如Sum(1, 5, 7) , Div(10, 5), Mul(3, 4)
  • @HamZa - 仅 Sum(1, 5, 7) ... 单词、括号、逗号分隔的数字、括号。没有其他变体。

标签: php string-split


【解决方案1】:
$input = "Sum(1, 5, 7)";

preg_match_all('#(\w+)\((.*?)\)#', $input, $m);

print_r($m);

例如Ideone.com

【讨论】:

  • 似乎是一个好的开始,但这实际上将 '1, 5, 7' 作为字符串返回,而不是作为数组返回。
  • 从那里开始,将字符串分解成一个数组。
【解决方案2】:

试试这个:

$input = "Sum(1, 5, 7)";

$split1=explode('(',$input);

$name=$split1[0];
echo $name;
$newk=rtrim($split1[1],')');
echo '<br>';
$keys=explode(',',$newk);
print_r($keys)

Online demo

【讨论】:

  • 请将代码也放入答案中,以免答案纯粹是链接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-01
  • 1970-01-01
  • 2012-02-22
相关资源
最近更新 更多