* finish task #2938.

This commit is contained in:
pengjiangxiu
2017-03-01 11:05:25 +08:00
parent 175f0b4160
commit 586ac5c826
10 changed files with 276 additions and 3 deletions
+48
View File
@@ -2389,4 +2389,52 @@ class projectModel extends model
if(isset($fullTrees[0]) and empty($fullTrees[0]->children)) array_shift($fullTrees);
return array_values($fullTrees);
}
public function toPinyin($products)
{
global $app;
static $pinyin;
static $dataKeys;
if(empty($pinyin)) $pinyin = $app->loadClass('pinyin');
$joinOptions = '';
$sign = ' aNd ';
foreach($products as $value)
{
if(!isset($dataKeys[$value->name])) $joinOptions .= str_replace($sign, ' and ', $value->name) . $sign;
}
if($joinOptions)
{
$valuesPinyin = $pinyin->romanize($joinOptions);
$signLenth = strlen($sign);
$pinyinSign = trim($sign);
$pySignLenth = strlen($pinyinSign);
while($joinOptions)
{
$valuePinyin = '';
$value = '';
$pinyinPos = strpos($valuesPinyin, $pinyinSign);
if($pinyinPos !== false)
{
$valuePinyin = substr($valuesPinyin, 0, $pinyinPos);
$valuesPinyin = substr($valuesPinyin, $pinyinPos + $pySignLenth);
}
$valuePos = strpos($joinOptions, $sign);
if($valuePos === false) break;
$value = substr($joinOptions, 0, $valuePos);
$joinOptions = substr($joinOptions, $valuePos + $signLenth);
$valuePinyin = preg_split('/[^a-z]+/iu', trim($valuePinyin));
$valueAbbr = '';
foreach($valuePinyin as $wordPinyin) if($wordPinyin) $valueAbbr .= $wordPinyin[0];
$dataKeys[$value] = empty($valuePinyin) ? '' : join($valuePinyin) . ' ' . $valueAbbr;
}
}
return $dataKeys;
}
}