如何在php中从索引创建字符串

时间:2012-08-24 11:31:26

标签: php string function indexing

我必须将索引传递给函数,并从该索引返回一个包含1到4个字符的字符串。

我有:

$string = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

因此,如果我说index(20),函数应返回较低的“k”,因为它是$ string变量中的索引。

但是...

如果我输入索引

62 it should return 10
63 .. 11

那是因为从索引62开始它应该从1开始,而不是0,并循环到下一个索引,所以它们将是2长度字符串

如果我输入索引

3843 .. ZZ

这是因为从索引3843开始,[0-9a-zA-Z] [0-9a-zA-Z]的所有可能性都已结束,现在字符串以3长度开始。

3844 .. 100

...

9999 .. 2Bh

所有的可能性和[0-9a-zA-Z] [0-9a-zA-Z] [0-9a-zA-Z],但我只需要直到索引9999

2 个答案:

答案 0 :(得分:2)

您的问题有点难以理解,不确定这是否是您想要的:

$string = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; 

function t($n)
{
    global $string;
    $ret = $string{$n%62};
    if($n>=62)
        $ret = t(floor($n/62)).$ret;
    return $ret;
}

echo t(9999);

答案 1 :(得分:0)

你所要求的基本上是一个基数转换器,从基数10(十进制)数字到基数64(在计数系统中使用你的字符串作为64位数字)。

PHP确实提供了内置的base_convert() function,但是虽然它适用于在十六进制和十进制之间进行转换,但它不适合像这样的非常高的基数。这部分是因为没有人通常对它们有任何需要,部分原因是这种基数的数字不是商定的标准。

上面链接的base_convert()页面的评论中有几个示例,其中人们编写的函数试图为高基础工作。我不能保证他们中的任何一个。