用substr问题剥离随机数

时间:2011-01-11 03:48:46

标签: php random substring

使用随机数包含在另一个字符中。然后我想删除随机数,然后留下另一个字符。我有这个代码一致地生成随机数(8个字符长)。如果多次点击刷新按钮,即使“随机数”加上“ID”仍然存在,“ID”字段也会消失。不确定substr函数刷新时随机数发生了什么。 这是代码:

// Begin Create Random ID Code /////////////////////////////////////////

function gRanStr1() {
    $length1 = 8;
    $characters = “0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ”;

    for ($p = 0; $p < $length1; $p++) {
        $lcrs1 .= $characters[mt_rand(0, strlen($characters)-1)];
    }

    $lcrs9 = str_replace(' ', '', $lcrs9);

    return $lcrs1;

}

// End Create Random ID Code /////////////////////////////////////////

// Begin Decode Random ID Code /////////////////////////////////////////

$TrkR99 = "c";

$ResHeadID = gRanStr1() . $TrkR99;

$ResHeadID = preg_replace('/[\s]+/',' ',$ResHeadID);

echo "”;
echo $ResHeadID . ” = echo of Random Number plus ID“;

for($i=0; $i<strlen($ResHeadID); $i++){
    if(!is_numeric(substr($ResHeadID, $i, 1))){
        $Index1 = $i;
        break;
    }
}

if ($ResHeadID == "") {
    "";
} else {
    $ResHeadID = preg_replace('/[\s]+/',' ',$ResHeadID);
    $TrkRa1 = substr($ResHeadID, $Index1 + 8, 1);
}

$dTrkRes = $TrkRa1;

echo $TrkRa1 . " = echo of ID after random number stripped.“;

echo “”;

// End Decode Random ID Code /////////////////////////////////////////

1 个答案:

答案 0 :(得分:0)

我认为你的问题在于行 $ResHeadID = preg_replace('/[\s]+/',' ',$ResHeadID);

您的随机数字可能以数字开头。如果是这种情况,preg替换将有一些偏移并杀死你的ID。

你的随机字符串有一个固定的长度,所以我建议你做 你的else子句中的$TrkRa1 = substr($ResHeadID, 8);