//====================================================================
// 函数名称 - of_GetNextID(as_prior_id, al_next_inc)
//--------------------------------------------------------------------
// 功能描述: 获得后续编号
//--------------------------------------------------------------------
// 参数列表:
//
// String as_prior_id: 前一个编号
// Long al_next_inc: 后续加几,通常为1
//--------------------------------------------------------------------
// 返回值: (String) 
//====================================================================
Integer i, li_len
String ls_prefix
Long ll_new_id, ll_prefix_lenIf IsNull(as_prior_id) Or as_prior_id = "" Then Return ""li_len = Len(as_prior_id)
For i = li_len To 1 Step -1
If Not IsNumber(Mid(as_prior_id, i, 1)) Then Exit
NextIf li_len - i >= 10 Then //注意此函数获得最多10位右侧流水号部分
ll_prefix_len = li_len - 9
Else
ll_prefix_len = i
End Ifls_prefix = Left(as_prior_id, ll_prefix_len)ll_new_id = Long(Mid(as_prior_id, ll_prefix_len + 1)) + al_next_incReturn ls_prefix + String(ll_new_id, Fill("0", li_len - ll_prefix_len))
power builder代码 那位大大帮忙转成php的 谢谢了

解决方案 »

  1.   


    <?php echo '$as_id:'. $as_id = '21321B010234V54'; 
    echo '<br />';
    $li_len = strlen($as_id);
    echo '$li_len:' . $li_len . '<br />';
    for($i = 0; $i < $li_len; $i++) {
    if(!is_numeric(substr($as_id, $i, 1))) { 
    break;
    }
    }
    echo '$i:' . $i . '<br />';
    If ($li_len - $i >= 10) {
    $ll_prefix_len = $li_len - 9;
    }Else{
    $ll_prefix_len = $i;
    }
    echo '$ll_prefix_len:' . $ll_prefix_len.'<br />'; $ls_prefix = substr($as_id,0,$ll_prefix_len-$li_len+1);
    $ll_new_id = substr($as_id, $ll_prefix_len + 1) + 1;

    //echo 'netxid:'. $ls_prefix .$ll_new_id .'<br />';
    echo '$ls_prefix:' . $ls_prefix.'<br />';
    echo '$ll_new_id:' . $ll_new_id.'<br />';
    echo 'netxid:'. $ls_prefix . str_pad($ll_new_id, $li_len - $ll_prefix_len);
    ?>