From 0a2433b2e915a5b750694a86f9e5f5c285d4338e Mon Sep 17 00:00:00 2001 From: overtrue Date: Sat, 1 Aug 2015 12:48:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=97=A0=E7=94=A8=E7=9A=84?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=8F=8A=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Pinyin/Pinyin.php | 44 ++++++++++--------------------------------- 1 file changed, 10 insertions(+), 34 deletions(-) diff --git a/src/Pinyin/Pinyin.php b/src/Pinyin/Pinyin.php index be1c49b8..b1467a5a 100755 --- a/src/Pinyin/Pinyin.php +++ b/src/Pinyin/Pinyin.php @@ -33,13 +33,6 @@ class Pinyin */ protected static $dictionary; - /** - * Table of pinyin frequency. - * - * @var array - */ - protected static $frequency; - /** * Appends words. * @@ -74,7 +67,7 @@ class Pinyin private function __construct() { if (is_null(static::$dictionary)) { - self::$dictionary = unserialize(file_get_contents(__DIR__.'/data/dict.php')); + self::$dictionary = json_decode(file_get_contents(__DIR__.'/data/dict_new.php'), true); } } @@ -197,9 +190,9 @@ public static function parse($string, array $settings = array()) * * @param array $appends */ - public static function appends($appends = array()) + public static function appends(array $appends) { - static::$appends = array_merge(static::$appends, static::formatAdditionalWords($appends)); + static::$dictionary = array_merge(self::$dictionary, static::formatWords($appends)); } /** @@ -240,42 +233,25 @@ protected function getFirstLetters($pinyin, $settings) */ protected function string2pinyin($string) { - $dictionary = array_merge(self::$dictionary, $this->getAdditionalWords()); - $pinyin = strtr($this->prepare($string), $dictionary); + $pinyin = strtr($this->prepare($string), self::$dictionary); return trim(str_replace(' ', ' ', $pinyin)); } - /** - * Return additional words. - * - * @return array - */ - protected function getAdditionalWords() - { - static $additionalWords; - - if (empty($additionalWords)) { - $additionalWords = static::formatAdditionalWords(include __DIR__.'/data/additional.php'); - } - - return array_merge($additionalWords, static::$appends); - } - /** * Format user's words. * - * @param array $additionalWords + * @param array $words * * @return array */ - public static function formatAdditionalWords($additionalWords) + public static function formatWords($words) { - foreach ($additionalWords as $words => $pinyin) { - $additionalWords[$words] = static::formatDictPinyin($pinyin); + foreach ($words as $word => $pinyin) { + $words[$word] = static::formatDictPinyin($pinyin); } - return $additionalWords; + return $words; } /** @@ -287,7 +263,7 @@ public static function formatAdditionalWords($additionalWords) */ protected static function formatDictPinyin($pinyin) { - return preg_replace_callback('/[a-z]{1,}:?\d{1}/i', function ($matches) { + return preg_replace_callback('/[a-z]{1,}:?\d{1}\s?/i', function ($matches) { return strtolower($matches[0]); }, " {$pinyin} "); }