如果我想修改这样的逗号分隔列表:
$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 ."'";
答案 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