在PHP中修改逗号分隔列表中的字符串的最短方法

时间:2015-12-29 05:13:51

标签: php

如果我想修改这样的逗号分隔列表:

$foo = "2, 4, 33, 25, 66"

成为

$foo = "'1-2', '1-4', '1-33', '1-25', '1-66'"

在PHP中实现这一目标的最快,最有效的方法是什么?

修改 我试过这个,但寻找更好的方法:

$foo = "2, 4, 33, 25, 66";
$bar = implode("', '1-",explode(",",$foo));
$foo = "'1-". $bar ."'";

5 个答案:

答案 0 :(得分:5)

$foo = "2, 4, 33, 25, 66";
echo preg_replace("/(\d+)(,?)/", "'1-$1'$2", $foo );

根据@roullie的要求,这是一个快速的正则表达式解决方案。在正则表达式中,\d+匹配1位或更多位数。 ,?匹配0或1个逗号(最后一项没有共同点,所以我必须匹配0或1。

答案 1 :(得分:4)

最短的代码:

implode(", ", array_map(function($item) {
    return "'1-{trim($item)}'";
}, explode(",", $foo));

基本上你用逗号分割字符串,然后将数字映射到1-$number'格式,不要忘记修剪爆炸值,然后将它们连接起来。这也是最快的代码,因为解释PHP代码的数量最少。

如果您确定初始字符串中的所有项目都以逗号+空格分隔,那么您可以按该字符串进行爆炸,并将trim()保留为:

implode(", ", array_map(function($item) {
    return "'1-$item'";
}, explode(", ", $foo));

答案 2 :(得分:1)

尝试:

$foo = implode(", ", array_map(function($v) {return "1-".$v}, explode(", ", $foo)));

答案 3 :(得分:0)

您可以尝试如下:

values[] = array_explode(",",$foo);
unset($foo);
foreach($values as $value)
{
      $value = '1-'.$value;
      $foo[] = $value;
}

答案 4 :(得分:0)

首先将其移至数组并将1-附加到每个数字。

/home/hduser/abc.py