CodeIgniter - 根据用户输入的字符串生成代码

时间:2015-11-26 07:58:45

标签: php codeigniter

美好的一天,

我正在尝试根据用户输入的字符串生成代码。 代码应该是唯一的,如果已经使用过,将在数据库中进行检查。

例如,如果用户输入“代码片段”,默认情况下代码应为“TCS”,如果已经采用,则应该类似于“THECS”等,直到找到未使用的代码。

我正在使用CodeIgniter,但任何PHP函数都可以使用。

我目前的代码如下:

$trimmed_schoolname = trim($school_name);
    $org_array = explode(" ",$trimmed_schoolname);

    $disallowed_words = array('and', 'of', 'or');
    $name_words = array_diff($org_array, $disallowed_words);

    if (count($name_words) == 1)
    {
        $recommended_code = substr($trimmed_schoolname, 0, 3);

        if ($this->check_if_used($recommended_code,$domain_ext))
        {               
            if ($this->check_if_used($recommended_code,$domain_ext))
            {
                $recommended_code = substr($trimmed_schoolname, 0, 4);
            }
            if ($this->check_if_used($recommended_code,$domain_ext))
            {
                $recommended_code = substr($trimmed_schoolname, 0, 5);
            }
        }
    }
    elseif (count($name_words) == 2)
    {
        $recommended_code = substr($name_words[0], 0, 1).substr($name_words[1], 0, 1);

        if ($this->check_if_used($recommended_code,$domain_ext))
        {               
            if ($this->check_if_used($recommended_code,$domain_ext))
            {
                $recommended_code = substr($name_words[0], 0, 2).substr($name_words[1], 0, 1);
            }
            if ($this->check_if_used($recommended_code,$domain_ext))
            {

                $recommended_code = $name_words[0].substr($name_words[1], 0, 2);
            }
        }
    }
    elseif (count($name_words) > 2) 
    {
        foreach ($name_words as $word)
        {
            $recommended_code .= substr($word, 0, 1);
        }   

        if ($this->check_if_used($recommended_code,$domain_ext))
        {
            $recommended_code = ''; 
            $recommended_code .= $name_words[0];
        }

        if ($this->check_if_used($recommended_code,$domain_ext))
        {
            $recommended_code = ''; 
            $recommended_code .= $name_words[0];

            $i = 1;

            while ($i < count($name_words))
            {
                $recommended_code .= substr($name_words[$i], 0, 1);
                $i++;
            }
        }
    }

以上可能是一个非常大的方法,所以任何帮助都值得赞赏

提前致谢

1 个答案:

答案 0 :(得分:1)

使用类似strtolower(str_replace(' ', '', trim($school_name))的内容来设置默认起点。检查这是否是唯一的。如果没有,请在末尾添加一个随机的3位或4位数字,然后让用户有机会在他们不喜欢的情况下更改整个内容。

如果示例输入名称类似于&#34; The Code Snippet&#34;,则检查的第一个选项是thecodesnippet。如果这不是唯一的,请尝试thecodesnippet123,甚至thecodesnippet1thecodesnippet2。或者让他们自定义它,然后检查他们的输入。