我希望用php代码将一个字符串“ffffaaaaaa,bbbbb,cccccc,ddddd”
转换成
“cccccc,ddddd,aaaaaa,bbbbb”
请尽量配上注释,分我全给了!
第1个回答 2013-08-23
我想你是因为待替换的字符串和需要替换的字符串中有部分相同的串所以产生了疑问吧,其实可以用一个中间变量来解决问题。
<?php$string = 'ffffaaaaaa,bbbbb,cccccc,ddddd'; //源字符串变量
$patterns = array('/ffffaaaaaa/','/bbbbb/','/cccccc/','/ddddd/'); //待替换的规则
$replacements = array('111','222','333','444'); //中间变量数组
$string2 = preg_replace($patterns, $replacements, $string);
$patterns2 = array('/111/','/222/','/333/','/444/'); //中间变量规则
$replacements2 = array('cccccc','ddddd','aaaaaa','bbbbb'); //最终要替换的变量数组
echo preg_replace($patterns2, $replacements2, $string2); //输出最终替换完成的字符串
?>追问
字符串基本就是这个形式,但又不一定就是ffffaaaaaa,bbbbb,cccccc,ddddd
也可能是ffffwnduwssss,gwj1s3,ss3dd,1a24d
如果转换成ss3dd,1a24d,wnduwssss,gwj1s3
我觉得应该要查找第二个","左边的内容,然后把内容里ffff去掉
再放在右边的内容后面
具体用php应该怎么表述呀
$string = 'ffffwnduwssss,gwj1s3,ss3dd,1a24d';
$str = str_replace('ffff','',$string); //先把多余的ffff替换掉
$arr = explode(',', $str); //把逗号分隔的字符串放到数组里
$str = $arr[2].','.$arr[3].','.$arr[0].','.$arr[1]; //把数组元素顺序按照需要排列,重新组成字符串
echo $str; //输出这个字符串
?>
这样应该就可以了,每次只需要把你要整理的字符串放到$string变量中。
如果是在一个循环里
每次得到的字符串都不一样呢?
那就把我的这段程序放到循环里就行了啊,或者封装一个函数,在循环里调用
<?php$string = 'ffffwnduwssss,gwj1s3,ss3dd,1a24d';
echo replaceErrorStr($string);
function replaceErrorStr($string) {
$str = str_replace('ffff','',$string); //先把多余的ffff替换掉
$arr = explode(',', $str); //把逗号分隔的字符串放到数组里
$str = $arr[2].','.$arr[3].','.$arr[0].','.$arr[1]; //把数组元素顺序按照需要排列,重新组成字符串
return $str;
}
?>本回答被提问者和网友采纳
第2个回答 推荐于2016-08-27
$array = array(1=>'数据1', 2=>'数据2', 3=>'数据3', 4=>'数据4');
$str="2,3";
//转换过程
$array2 = explode(",", $str);
for ($i=0;$i<count($array2);$i++){
$newstr[$i] = $array[$array2[$i]];
}
echo implode(",", $newstr);
$str="2,3";
//转换过程
$array2 = explode(",", $str);
for ($i=0;$i<count($array2);$i++){
$newstr[$i] = $array[$array2[$i]];
}
echo implode(",", $newstr);
第3个回答 2013-08-23
这个字符串是固定的吗?
<?php$arr = explode(',', 'ffffaaaaaa,bbbbb,cccccc,ddddd');
$str = $arr[2].$arr[3].str_replace('ffff','',$arr[0]).$arr[1];
?>