替换php字符串序列号中的随机数(123 ...)

时间:2015-07-08 13:23:35

标签: php string replace

在PHP中,如何将包含随机字母和数字混合的字符串转换为包含序列号的字符串以及随机数而不更改其在字符串中的位置?例如,

 $str_a = "1)Apple 5)Ball 3)Cat 8)Dog 4)Egg";

现在,我想将此字符串转换为

$str_b = "1)Apple 2)Ball 3)Cat 4)Dog 5)Egg";

我希望数字1,5,3,8,41,2,3,4,5

3 个答案:

答案 0 :(得分:1)

这应该适合你:

只需使用preg_replace_callback()并使用递增的数字替换每个数字(\d+ => 0-9),.e.g

<?php

    $str_a = "1)Apple 5)Ball 3)Cat 8)Dog 4)Egg";
    $start = 1;
    echo $newStr = preg_replace_callback("/\d+/", function($m)use(&$start){
        return $start++;
    }, $str_a);

?>

输出:

1)Apple 2)Ball 3)Cat 4)Dog 5)Egg

答案 1 :(得分:0)

您可以使用preg_split然后将其连接增加1.这也适用于由多个数字组成的数字:

$str_a = "51)Apple 675)Ball 334)Cat 84)Dog 904)Egg";
$a = preg_split('/\b\d+/', $str_a);
$str_b = '';
for($i=0,$c = count($a);$i<$c;$i++){
    if($i){
        $str_b .= $i.$a[$i];
    }
}
echo $str_b;

输出:

1)Apple 2)Ball 3)Cat 4)Dog 5)Egg 

答案 2 :(得分:0)

创建简单循环程序:

$str_a = "1)Apple 5)Ball 3)Cat 8)Dog 4)Egg";

function change($str_a) {
    $counter = 1;
    for($i=0; $i<strlen($str_a); $i++) {
        if(is_numeric($str_a[$i])) {
            $str_a[$i] = $counter++;
        }
    }
    return $str_a;
}
print(change($str_a))

输出:

  1)Apple 2)Ball 3)Cat 4)Dog 5)Egg