我編碼取決於你所提到的規格如下SKU生成器,你可以改變$l
使它(在某種程度上)更獨特:
echo SKU_gen('ZeroGround', 13, 2).'<br>'; // zrgr-0013
echo SKU_gen('ZeroGround', 13, 3).'<br>'; // zrgrn-0013
echo SKU_gen('Glock', 14, 3).'<br>'; // glc-0014
echo SKU_gen('CZ', 15, 3).'<br>'; // cz-0015
echo SKU_gen('Kizlyar', 20).'<br>'; // kz-0020
function SKU_gen($string, $id = null, $l = 2){
$results = ''; // empty string
$vowels = array('a', 'e', 'i', 'o', 'u', 'y'); // vowels
preg_match_all('/[A-Z][a-z]*/', ucfirst($string), $m); // Match every word that begins with a capital letter, added ucfirst() in case there is no uppercase letter
foreach($m[0] as $substring){
$substring = str_replace($vowels, '', strtolower($substring)); // String to lower case and remove all vowels
$results .= preg_replace('/([a-z]{'.$l.'})(.*)/', '$1', $substring); // Extract the first N letters.
}
$results .= '-'. str_pad($id, 4, 0, STR_PAD_LEFT); // Add the ID
return $results;
}
不能你只是做str_replace函數? – Scott 2013-04-05 09:26:15
是的,我可以,但問題是在「縮寫製造商」,不知道如何以編程方式縮寫字符串 – aspirinemaga 2013-04-05 09:27:54
我認爲最好的選擇是將縮寫存儲在分貝,而不是嘗試計算它。 – bitWorking 2013-04-05 09:29:46