当前位置:编程学习 > php >>

php正则替换:2 9 8 8 12 15 + 8 这是一串数字(数字的个数不一定),数字间的空格数量不一定;

2 9 8 8 12 15 8 这是一串数字(数字的个数不一定),数字间的空格数量不一定;我想用正则替换做成2,9,8,8,12,15+8 即最后一个数字前面用+号割开,其他用,号割开 $lot='2011130 2 9 12 15 17'; $lot2=preg_replace('/\s/',',',$lot); echo $lot2;//数字之间用逗号割开 $lot3=preg_replace('/,{1}$1/','+',$lot2);//重写,从后面匹配替换,替换第一个,号为+号 echo $lot3; 为什么第二步替换不好使呢?应该怎么写? 谢谢
补充:能不能用正则的方法从后面替换,把最后俩个数字之间替换成用+号连接
答案:$str='2 9 8 8 12 15  8';
$str=preg_replace('/[\s]{1,}/',',',trim($str));
$str=preg_replace('/(\,)([0-9]){0,}$/',"+\\2",$str);
结果是2,9,8,8,12,15+8
可以参考下
其他:我的方法比较麻烦参考一下吧
<?php
$str="2  9 8 8   12 15  8";
$str_array=explode(" ",$str);//用空格分格数组
$str_array=array_filter($str_array);//过滤数组
$str_array=explode(",",implode(",",$str_array));//重新排序数组
$str_array_end=$str_array[count($str_array)-1];//获取最后一个数组单元
array_pop($str_array);//将数组最后一个单元弹出(出栈)
$str_res=implode(",",$str_array);//用,连接数组单元
$result=$str_res."+".$str_array_end;//得到最终结果
echo $result;//结果:2,9,8,8,12,15+8
?> preg_replace('/\s+([0-9])+$/',"+\\1",trim($str)) 天羽人体 

上一个:在线人员的检测用php怎么写
下一个:请教PHP程序员问题

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,