2011-01-11 2 views
0

Использование случайного числа для включения в другой символ. Затем я хочу удалить случайное число и просто оставить другого персонажа. У меня есть этот код, который последовательно генерирует случайное число (8 символов). Если вы нажмете кнопку обновления несколько раз, поле «ID» исчезнет, ​​даже если «Random Number» плюс «ID» все еще там. Не уверен, что происходит со случайным числом при обновлении в функции substr. Это код:удаление случайного числа с помощью проблемы с substr

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

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

    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

У вас есть синтаксические ошибки. Я настоятельно рекомендую вам использовать редактор подсветки синтаксиса, например Notepad ++. Кроме того, не используйте интеллектуальные кавычки. – Jonah

+0

Извините, но ваш код - настоящий большой беспорядок. Назначение переменных имен, по-видимому, защищает работу программиста, некоторые строки просто бесполезны (например, '$ lcrs9 = str_replace ('', '', $ lcrs9); # для чего нет $ lcrs9!') Или 'echo ""; # есть умная цитата! 'или' if ($ ResHeadID == "") {"";/* WTF? * /} 'Всякий раз, когда вы отправляете вопрос, пожалуйста, укажите что-то ** читаемое ** –

ответ

0

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

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

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

+0

Большое спасибо. Я очистил код, и ваше исправление работает отлично. Еще раз спасибо. – Jim

+0

рад помочь, было бы неплохо, если бы вы отметили этот вопрос как решенный/мой ответ как принято :) –

Смежные вопросы