美好的一天,
我正在尝试根据用户输入的字符串生成代码。 代码应该是唯一的,如果已经使用过,将在数据库中进行检查。
例如,如果用户输入“代码片段”,默认情况下代码应为“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++;
}
}
}
以上可能是一个非常大的方法,所以任何帮助都值得赞赏
提前致谢
答案 0 :(得分:1)
使用类似strtolower(str_replace(' ', '', trim($school_name))
的内容来设置默认起点。检查这是否是唯一的。如果没有,请在末尾添加一个随机的3位或4位数字,然后让用户有机会在他们不喜欢的情况下更改整个内容。
如果示例输入名称类似于&#34; The Code Snippet&#34;,则检查的第一个选项是thecodesnippet
。如果这不是唯一的,请尝试thecodesnippet123
,甚至thecodesnippet1
或thecodesnippet2
。或者让他们自定义它,然后检查他们的输入。