/** * 递增字符 * @param string $FinallyStr 输入字符 * @param options $Type 类型 [默认全部 \ alpha 纯字母 / lower 小字母 / upper 大字母] * @param boolean $FirstRandomCode 首个随机码 */ public static function NewStr($FinallyStr, $Type = 'all', $FirstRandomCode = false) { static $instance = null; $Number = false; $lower = false; $upper = false; if (is_null($instance)) { $instance = new self(); } switch ($Type) { case 'alpha': if (!ctype_alpha($FinallyStr)) { return false; } $lower = true; $upper = true; break; case 'lower': if (!ctype_lower($FinallyStr)) { return false; } $lower = true; break; case 'upper': if (!ctype_upper($FinallyStr)) { return false; } $upper = true; break; default: if (!ctype_alnum($FinallyStr)) { return false; } else { if (ctype_digit($FinallyStr)) { $strlen = strlen('a' . $FinallyStr); --$strlen; $digit = intval($FinallyStr); ++$digit; if ($strlen == strlen($digit)) { return $digit; } return str_pad($digit, $strlen, '0', STR_PAD_LEFT); } } $Number = true; $lower = true; $upper = true; break; } if (!($StrLength = strlen($FinallyStr))) { return false; } $instance->Table = $instance->CapacityTable($Number, $lower, $upper); $instance->TableCount = count($instance->Table) - 1; $i = 0; $NewArr = array(); $AnStr = str_split($FinallyStr); while (true) { ++$i; $NewAnStr = $instance->Calculation(array_pop($AnStr)); $NewArr[] = $NewAnStr; if ($NewAnStr === false && $NewAnStr != $instance->Table[0] || $i < $StrLength) { break; } } $ObverseStr = implode('', $AnStr) . implode('', array_reverse($NewArr)); if ($FirstRandomCode != false) { $ObverseStr = $instance->ReplaceFirstCode($ObverseStr); } return $StrLength == strlen($ObverseStr) ? $ObverseStr : false; }