удаление случайного числа с проблемой подстроки - PullRequest
0 голосов
/ 11 января 2011

Использование случайного числа, которое будет включено с другим персонажем.Тогда я хочу убрать случайное число и просто оставить другого персонажа.У меня есть этот код, который генерирует случайное число (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 голосов
/ 11 января 2011

Я думаю, что ваши проблемы в линии
$ResHeadID = preg_replace('/[\s]+/',' ',$ResHeadID);

Ваши случайные числа могут начинаться с цифры. в этом случае замена preg будет иметь некоторое смещение и убьет ваш ID.

Ваша случайная строка имеет фиксированную длину, поэтому я бы предложил просто сделать $TrkRa1 = substr($ResHeadID, 8); в вашем предложении else.

...