欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

公历 农历转换 阳历 阴历 及汉语拼音转换 的php 文件 有大用

shiping1 的头像

PHP汉字拼音转换和公历农历转换  Lunar.class.php 见下面附件里的 Lunar.class.php


本文整理了PHP汉字拼音转换和公历农历转换两个功能类文件,非常实用。比如我们查找通讯录可以通过联系人姓名的拼音首字母来查询,可以通过首字母来导航大数据量,可以通过转换拼音来做网站优化等。公农历转化一般用在日历日程安排的项目中,方便农历的节日提醒等等。

1、PHP汉字转拼音 //php 文件见 附件 phpclass.zip   里的 Pinyin.class.php 这里对多音字无能为力 处理的字不多 大约6000多个 如对 "镕" 字无能为力, 不速度快,可以说是 有大用 ,下面 有个从laravel改装过来的 处理的汉字较多 也有大用






Pinyin.class.php类文件可以将大多数汉字转换成汉语拼音,当然也有个别生僻字不能转换,如果你想转换所有的汉字拼音的话,可能需要再配合一个汉字字库来实现,使用该类文件就基本能满足你的项目需求了。用法:

require_once("Pinyin.class.php"); 
$pinyin = new Pinyin(); 
$str = '好好学习天天向上'echo $pinyin->strtopin($str); 

执行后输出:hao hao xue xi tian tian xiang shang。

如果只是想输出汉字首字母则使用:

echo $pinyin->strtopin($str,1); 

执行后输出:hhxxttxs。

2、PHP公历农历转换

公历转农历的算法非常复杂,涉及到农历润月、干支纪年、生肖等。网络上有很多提供的算法,本文整理的一个Lunar.class.php可以实现公农历互转功能。用法:

require_once("Lunar.class.php"); 
$lunar = new Lunar(); 
 //记住参数最好是string类型 否则的话 09,08前面有0的 可以会有问题 
$date = $lunar->convertSolarToLunar(2013,8,17); //公历转农历 
print_r($date); 

执行后输出数组:

Array ( [0] => 二零一三 [1] => 七月 [2] => 十一 [3] => 癸巳  
[4] => 7 [5] => 11 [6] => 蛇 [7] => 0 )  

如果要将农历转换成公历则使用:

$date = $lunar->convertLunarToSolar(2013,8,17); //农历转公历 
print_r($date); 

执行后输出数组:

Array ( [0] => 2013 [1] => 09 [2] => 21 )  

以上整理的两个PHP类,可以满足项目基本需求,但是都有一定的缺陷,比如拼音转换可能会遇到生僻字转换不了,公历转农历你会发现2021年后的转换会出问题了,大家有空可以研究下,如果您有更好的实现代码,欢迎分享。

声明:本文为原创文章,helloweba.com和作者拥有版权,如需转载,请注明来源于helloweba.com并保留原文链接:http://www.helloweba.com/view-blog-227.html

来自 http://www.helloweba.com/view-blog-227.html


php阳历转阴历(农历),阴历转阳历的方法


由于最近一个项目设计到将阳历转阴历从而得到相应节日的算法,对这方面不是很了解,于是就在网上搜了一圈。不错,还算是找到一个比较不错的php类,实现了将阳历转换为阴历(农历),阴历转换为阳历的算法,同时还能获取干支纪年,生肖,以及相应的阴历的中文叫法等等,功能还是挺齐全的,在这里共享一下。

具体类代码如下:

Lunar.class.php 

 

class Lunar{
	var $MIN_YEAR=1891;
	var $MAX_YEAR=2100;
	var $lunarInfo=array(
		array(0,2,9,21936),array(6,1,30,9656),array(0,2,17,9584),array(0,2,6,21168),array(5,1,26,43344),array(0,2,13,59728),
		array(0,2,2,27296),array(3,1,22,44368),array(0,2,10,43856),array(8,1,30,19304),array(0,2,19,19168),array(0,2,8,42352),
		array(5,1,29,21096),array(0,2,16,53856),array(0,2,4,55632),array(4,1,25,27304),array(0,2,13,22176),array(0,2,2,39632),
		array(2,1,22,19176),array(0,2,10,19168),array(6,1,30,42200),array(0,2,18,42192),array(0,2,6,53840),array(5,1,26,54568),
		array(0,2,14,46400),array(0,2,3,54944),array(2,1,23,38608),array(0,2,11,38320),array(7,2,1,18872),array(0,2,20,18800),
		array(0,2,8,42160),array(5,1,28,45656),array(0,2,16,27216),array(0,2,5,27968),array(4,1,24,44456),array(0,2,13,11104),
		array(0,2,2,38256),array(2,1,23,18808),array(0,2,10,18800),array(6,1,30,25776),array(0,2,17,54432),array(0,2,6,59984),
		array(5,1,26,27976),array(0,2,14,23248),array(0,2,4,11104),array(3,1,24,37744),array(0,2,11,37600),array(7,1,31,51560),
		array(0,2,19,51536),array(0,2,8,54432),array(6,1,27,55888),array(0,2,15,46416),array(0,2,5,22176),array(4,1,25,43736),
		array(0,2,13,9680),array(0,2,2,37584),array(2,1,22,51544),array(0,2,10,43344),array(7,1,29,46248),array(0,2,17,27808),
		array(0,2,6,46416),array(5,1,27,21928),array(0,2,14,19872),array(0,2,3,42416),array(3,1,24,21176),array(0,2,12,21168),
		array(8,1,31,43344),array(0,2,18,59728),array(0,2,8,27296),array(6,1,28,44368),array(0,2,15,43856),array(0,2,5,19296),
		array(4,1,25,42352),array(0,2,13,42352),array(0,2,2,21088),array(3,1,21,59696),array(0,2,9,55632),array(7,1,30,23208),
		array(0,2,17,22176),array(0,2,6,38608),array(5,1,27,19176),array(0,2,15,19152),array(0,2,3,42192),array(4,1,23,53864),
		array(0,2,11,53840),array(8,1,31,54568),array(0,2,18,46400),array(0,2,7,46752),array(6,1,28,38608),array(0,2,16,38320),
		array(0,2,5,18864),array(4,1,25,42168),array(0,2,13,42160),array(10,2,2,45656),array(0,2,20,27216),array(0,2,9,27968),
		array(6,1,29,44448),array(0,2,17,43872),array(0,2,6,38256),array(5,1,27,18808),array(0,2,15,18800),array(0,2,4,25776),
		array(3,1,23,27216),array(0,2,10,59984),array(8,1,31,27432),array(0,2,19,23232),array(0,2,7,43872),array(5,1,28,37736),
		array(0,2,16,37600),array(0,2,5,51552),array(4,1,24,54440),array(0,2,12,54432),array(0,2,1,55888),array(2,1,22,23208),
		array(0,2,9,22176),array(7,1,29,43736),array(0,2,18,9680),array(0,2,7,37584),array(5,1,26,51544),array(0,2,14,43344),
		array(0,2,3,46240),array(4,1,23,46416),array(0,2,10,44368),array(9,1,31,21928),array(0,2,19,19360),array(0,2,8,42416),
		array(6,1,28,21176),array(0,2,16,21168),array(0,2,5,43312),array(4,1,25,29864),array(0,2,12,27296),array(0,2,1,44368),
		array(2,1,22,19880),array(0,2,10,19296),array(6,1,29,42352),array(0,2,17,42208),array(0,2,6,53856),array(5,1,26,59696),
		array(0,2,13,54576),array(0,2,3,23200),array(3,1,23,27472),array(0,2,11,38608),array(11,1,31,19176),array(0,2,19,19152),
		array(0,2,8,42192),array(6,1,28,53848),array(0,2,15,53840),array(0,2,4,54560),array(5,1,24,55968),array(0,2,12,46496),
		array(0,2,1,22224),array(2,1,22,19160),array(0,2,10,18864),array(7,1,30,42168),array(0,2,17,42160),array(0,2,6,43600),
		array(5,1,26,46376),array(0,2,14,27936),array(0,2,2,44448),array(3,1,23,21936),array(0,2,11,37744),array(8,2,1,18808),
		array(0,2,19,18800),array(0,2,8,25776),array(6,1,28,27216),array(0,2,15,59984),array(0,2,4,27424),array(4,1,24,43872),
		array(0,2,12,43744),array(0,2,2,37600),array(3,1,21,51568),array(0,2,9,51552),array(7,1,29,54440),array(0,2,17,54432),
		array(0,2,5,55888),array(5,1,26,23208),array(0,2,14,22176),array(0,2,3,42704),array(4,1,23,21224),array(0,2,11,21200),
		array(8,1,31,43352),array(0,2,19,43344),array(0,2,7,46240),array(6,1,27,46416),array(0,2,15,44368),array(0,2,5,21920),
		array(4,1,24,42448),array(0,2,12,42416),array(0,2,2,21168),array(3,1,22,43320),array(0,2,9,26928),array(7,1,29,29336),
		array(0,2,17,27296),array(0,2,6,44368),array(5,1,26,19880),array(0,2,14,19296),array(0,2,3,42352),array(4,1,24,21104),
		array(0,2,10,53856),array(8,1,30,59696),array(0,2,18,54560),array(0,2,7,55968),array(6,1,27,27472),array(0,2,15,22224),
		array(0,2,5,19168),array(4,1,25,42216),array(0,2,12,42192),array(0,2,1,53584),array(2,1,21,55592),array(0,2,9,54560)
	);
	/** 
	* 将阳历转换为阴历 
	* @param year 公历-年 
	* @param month 公历-月 
	* @param date 公历-日 
	*/ 
	function convertSolarToLunar($year,$month,$date){//debugger;
		$yearData=$this->lunarInfo[$year-$this->MIN_YEAR];
		if($year==$this->MIN_YEAR&&$month<=2&&$date<=9){ 
			return array(1891,'正月','初一','辛卯',1,1,'兔');
		}
		return $this->getLunarByBetween($year,$this->getDaysBetweenSolar($year,$month,$date,$yearData[1],$yearData[2]));
	}
	function convertSolarMonthToLunar($year,$month){
		$yearData=$this->lunarInfo[$year-$this->MIN_YEAR];
		if($year==$this->MIN_YEAR&&$month<=2&&$date<=9){ 
			return array(1891,'正月','初一','辛卯',1,1,'兔');
		}
		$month_days_ary=array(31,28,31,30,31,30,31,31,30,31,30,31);
		$dd=$month_days_ary[$month];
		if($this->isLeapYear($year)&& $month==2)$dd++;
		$lunar_ary=array();
		for ($i=1;$i<$dd;$i++){
			$array=$this->getLunarByBetween($year,$this->getDaysBetweenSolar($year,$month,$i,$yearData[1],$yearData[2]));
			$array[]=$year.'-'.$month.'-'.$i;
			$lunar_ary[$i]=$array;
		}
		return $lunar_ary;
	}
	/** 
	* 将阴历转换为阳历 
	* @param year 阴历-年 
	* @param month 阴历-月,闰月处理:例如如果当年闰五月,那么第二个五月就传六月,相当于阴历有13个月,只是有的时候第13个月的天数为0 
	* @param date 阴历-日 
	*/ 
	function convertLunarToSolar($year,$month,$date){ 
		$yearData=$this->lunarInfo[$year-$this->MIN_YEAR];
		$between=$this->getDaysBetweenLunar($year,$month,$date);
		$res=mktime(0,0,0,$yearData[1],$yearData[2],$year);
		$res=date('Y-m-d',$res+$between*24*60*60);
		$day=explode('-',$res);
		$year=$day[0];
		$month=$day[1];
		$day=$day[2];
		return array($year,$month,$day);
	}
	/** 
	* 判断是否是闰年 
	* @param year 
	*/ 
	function isLeapYear($year){ 
		return (($year%4==0&&$year%100!=0)||($year%400==0));
	}
	/** 
	* 获取干支纪年 
	* @param year 
	*/ 
	function getLunarYearName($year){ 
		$sky=array('庚','辛','壬','癸','甲','乙','丙','丁','戊','己');
		$earth=array('申','酉','戌','亥','子','丑','寅','卯','辰','巳','午','未');
		$year=$year.'';
		return $sky[$year{3}].$earth[$year%12];
	}
	/** 
	* 根据阴历年获取生肖 
	* @param year 阴历年 
	*/ 
	function getYearZodiac($year){ 
		$zodiac=array('猴','鸡','狗','猪','鼠','牛','虎','兔','龙','蛇','马','羊');
		return $zodiac[$year%12];
	}
	/** 
	* 获取阳历月份的天数 
	* @param year 阳历-年 
	* @param month 阳历-月 
	*/ 
	function getSolarMonthDays($year,$month){ 
		$monthHash=array('1'=>31,'2'=>$this->isLeapYear($year)?29:28,'3'=>31,'4'=>30,'5'=>31,'6'=>30,'7'=>31,'8'=>31,'9'=>30,'10'=>31,'11'=>30,'12'=>31);
		return $monthHash["$month"];
	}
	/** 
	* 获取阴历月份的天数 
	* @param year 阴历-年 
	* @param month 阴历-月,从一月开始 
	*/ 
	function getLunarMonthDays($year,$month){ 
		$monthData=$this->getLunarMonths($year);
		return $monthData[$month-1];
	}
	/** 
	* 获取阴历每月的天数的数组 
	* @param year 
	*/ 
	function getLunarMonths($year){ 
		$yearData=$this->lunarInfo[$year-$this->MIN_YEAR];
		$leapMonth=$yearData[0];
		$bit=decbin($yearData[3]);
		for ($i=0;$i<strlen($bit);$i ++){
			$bitArray[$i]=substr($bit,$i,1);
		}
		for($k=0,$klen=16-count($bitArray);$k<$klen;$k++){ 
			array_unshift($bitArray,'0');
		}
		$bitArray=array_slice($bitArray,0,($leapMonth==0?12:13));
		for($i=0;$i<count($bitArray);$i++){ 
			$bitArray[$i]=$bitArray[$i] + 29;
		}
		return $bitArray;
	}
	/** 
	* 获取农历每年的天数 
	* @param year 农历年份 
	*/ 
	function getLunarYearDays($year){ 
		$yearData=$this->lunarInfo[$year-$this->MIN_YEAR];
		$monthArray=$this->getLunarYearMonths($year);
		$len=count($monthArray);
		return ($monthArray[$len-1]==0?$monthArray[$len-2]:$monthArray[$len-1]);
	}
	function getLunarYearMonths($year){//debugger;
		$monthData=$this->getLunarMonths($year);
		$res=array();
		$temp=0;
		$yearData=$this->lunarInfo[$year-$this->MIN_YEAR];
		$len=($yearData[0]==0?12:13);
		for($i=0;$i<$len;$i++){ 
			$temp=0;
			for($j=0;$j<=$i;$j++){ 
				$temp+=$monthData[$j];
			}
			array_push($res,$temp);
		}
		return $res;
	}
	/** 
	* 获取闰月 
	* @param year 阴历年份 
	*/ 
	function getLeapMonth($year){ 
		$yearData=$this->lunarInfo[$year-$this->MIN_YEAR];
		return $yearData[0];
	}
	/** 
	* 计算阴历日期与正月初一相隔的天数 
	* @param year http://www.phpernote.com/
	* @param month 
	* @param date 
	*/ 
	function getDaysBetweenLunar($year,$month,$date){ 
		$yearMonth=$this->getLunarMonths($year);
		$res=0;
		for($i=1;$i<$month;$i++){ 
			$res+=$yearMonth[$i-1];
		}
		$res+=$date-1;
		return $res;
	}
	/** 
	* 计算2个阳历日期之间的天数 
	* @param year 阳历年 
	* @param cmonth 
	* @param cdate 
	* @param dmonth 阴历正月对应的阳历月份 
	* @param ddate 阴历初一对应的阳历天数 
	*/ 
	function getDaysBetweenSolar($year,$cmonth,$cdate,$dmonth,$ddate){ 
		$a=mktime(0,0,0,$cmonth,$cdate,$year);
		$b=mktime(0,0,0,$dmonth,$ddate,$year);
		return ceil(($a-$b)/24/3600);
	}
	/** 
	* 根据距离正月初一的天数计算阴历日期 
	* @param year 阳历年 
	* @param between 天数 
	*/ 
	function getLunarByBetween($year,$between){//debugger;
		$lunarArray=array();
		$yearMonth=array();
		$t=0;
		$e=0;
		$leapMonth=0;
		$m='';
		if($between==0){ 
			array_push($lunarArray,$year,'正月','初一');
			$t=1;
			$e=1;
		}else{ 
			$year=$between>0? $year : ($year-1);
			$yearMonth=$this->getLunarYearMonths($year);
			$leapMonth=$this->getLeapMonth($year);
			$between=$between>0?$between : ($this->getLunarYearDays($year)+$between);
			for($i=0;$i<13;$i++){ 
				if($between==$yearMonth[$i]){ 
					$t=$i+2;
					$e=1;
					break;
				}else if($between<$yearMonth[$i]){ 
					$t=$i+1;
					$e=$between-(empty($yearMonth[$i-1])?0:$yearMonth[$i-1])+1;
					break;
				}
			}
			$m=($leapMonth!=0&&$t==$leapMonth+1)?('闰'.$this->getCapitalNum($t- 1,true)):$this->getCapitalNum(($leapMonth!=0&&$leapMonth+1<$t?($t-1):$t),true);
			array_push($lunarArray,$year,$m,$this->getCapitalNum($e,false));
		}
		array_push($lunarArray,$this->getLunarYearName($year));// 天干地支 
		array_push($lunarArray,$t,$e);
		array_push($lunarArray,$this->getYearZodiac($year));// 12生肖 
		array_push($lunarArray,$leapMonth);// 闰几月 
		return $lunarArray;
	}
	/** 
	* 获取数字的阴历叫法 
	* @param num 数字 
	* @param isMonth 是否是月份的数字 
	*/ 
	function getCapitalNum($num,$isMonth){ 
		$isMonth=$isMonth||false;
		$dateHash=array('0'=>'','1'=>'一','2'=>'二','3'=>'三','4'=>'四','5'=>'五','6'=>'六','7'=>'七','8'=>'八','9'=>'九','10'=>'十 ');
		$monthHash=array('0'=>'','1'=>'正月','2'=>'二月','3'=>'三月','4'=>'四月','5'=>'五月','6'=>'六月','7'=>'七月','8'=>'八月','9'=>'九月','10'=>'十月','11'=>'冬月','12'=>'腊月');
		$res='';
		if($isMonth){ 
			$res=$monthHash[$num];
		}else{ 
			if($num<=10){ 
				$res='初'.$dateHash[$num];
			}else if($num>10&&$num<20){ 
				$res='十'.$dateHash[$num-10];
			}else if($num==20){ 
				$res="二十";
			}else if($num>20&&$num<30){ 
				$res="廿".$dateHash[$num-20];
			}else if($num==30){ 
				$res="三十";
			}
		}
		return $res;
	}
}

使用方法如下:

 //convertSolarToLunar()方法 记住参数最好是string类型 否则的话 09,08前面有0的 可以会有问题

<?php
2header("Content-Type:text/html;charset=utf-8");
4$month=$lunar->convertSolarToLunar(2013,07,08);//将阳历转换为阴历
5echo '<pre>';
6print_r($month);

 

打印结果如下:

Array
(
    [0] => 2013
    [1] => 五月
    [2] => 三十
    [3] => 癸巳
    [4] => 5
    [5] => 30
    [6] => 蛇
    [7] => 0
)

具体数组中各个元素代表什么意思,这里就不用解释了吧。

来自  http://www.phpernote.com/php-function/867.html


 


//下面这个laravel的东西  我改改代码 就可以算是有大用 
从 https://github.com/overtrue/pinyin 改装的 改装后的内容见 附件从laravel改装过来

基于 CC-CEDICT 词典的中文转拼音工具,更准确的支持多音字的汉字转拼音解决方案。

安装

使用 Composer 安装:

composer require "overtrue/pinyin:~3.0"

使用

拼音数组

use Overtrue\Pinyin\Pinyin;

$pinyin = new Pinyin();

$pinyin->convert('带着希望去旅行,比到达终点更美好');
// ["dai", "zhe", "xi", "wang", "qu", "lv", "xing", "bi", "dao", "da", "zhong", "dian", "geng", "mei", "hao"]

$pinyin->convert('带着希望去旅行,比到达终点更美好', PINYIN_UNICODE);
// ["dài","zhe","xī","wàng","qù","lǚ","xíng","bǐ","dào","dá","zhōng","diǎn","gèng","měi","hǎo"]

$pinyin->convert('带着希望去旅行,比到达终点更美好', PINYIN_ASCII);
//["dai4","zhe","xi1","wang4","qu4","lv3","xing2","bi3","dao4","da2","zhong1","dian3","geng4","mei3","hao3"]

选项:

选项描述
PINYIN_NONE不带音调输出: mei hao
PINYIN_ASCII带数字式音调: mei3 hao3
PINYIN_UNICODEUNICODE 式音调:měi hǎo

生成用于链接的拼音字符串

$pinyin->permalink('带着希望去旅行'); // dai-zhe-xi-wang-qu-lv-xing
$pinyin->permalink('带着希望去旅行', '.'); // dai.zhe.xi.wang.qu.lv.xing

获取首字符字符串

$pinyin->abbr('带着希望去旅行'); // dzxwqlx
$pinyin->abbr('带着希望去旅行', '-'); // d-z-x-w-q-l-x

翻译整段文字为拼音

将会保留中文字符:,。 ! ? : “ ” ‘ ’ 并替换为对应的英文符号。

$pinyin->sentence('带着希望去旅行,比到达终点更美好!');
// dai zhe xi wang qu lv xing, bi dao da zhong dian geng mei hao!

$pinyin->sentence('带着希望去旅行,比到达终点更美好!', true);
// dài zhe xī wàng qù lǚ xíng, bǐ dào dá zhōng diǎn gèng měi hǎo!

翻译姓名

姓名的姓的读音有些与普通字不一样,比如 ‘单’ 常见的音为 dan,而作为姓的时候读 shan

$pinyin->name('单某某'); // ['shan', 'mou', 'mou']
$pinyin->name('单某某', PINYIN_UNICODE); // ["shàn","mǒu","mǒu"]

在 Laravel 中使用

独立的包在这里:overtrue/laravel-pinyin

Contribution

欢迎提意见及完善补充词库 tools/patches/ :kiss:

来自 https://github.com/overtrue/pinyin

 

最简单、最准确的PHP中文转拼音的类 github项目地址:https://github.com/jifei/Pinyin

支持获取拼音以及拼音的缩写即首字母

支持utf-8、gbk等编码

能准确匹配6千多个常用汉字

单个汉字,一句话,中英文混合都完美支持

例子utf-8版

include_once 'Pinyin.php';
echo Pinyin::getPinyin("早上好");//获取拼音
echo Pinyin::getShortPinyin("早上好");//获取拼音缩写


例子gbk版

include_once 'Pinyin.php';
echo Pinyin::getPinyin("早上好",'gb2312');//获取拼音
echo Pinyin::getShortPinyin("早上好",'gb2312');//获取拼音缩写

来自 https://segmentfault.com/a/1190000002957586

//下面不太好用

 

PHP汉字转拼音更准确的解决方案

 2014/10/06
 

 

到目前为止这可能是最准确的一个解决方案了,大GitHub上各种找,没有一个好用的,大部分都只是汉字转拼音,所以包含多音字的结果基本都错误。当然也有基于词典的转换工具,不过还是解决不了词库不全造成的多音字问题(当然,完全解决是不太可能的,或者词库会无比的大)。比如康熙来了 大部分工具的试用结果是:kang xi lai liao.

基于上面的原因,我造了下面这个轮子。特点如下:

  • 基于CC-CEDICT.词典,解决大部分词汇问题;
  • 添加补充词典,解决CC-CEDICT不全或者不准确的问题;
  • 添加词频表,根据使用频率再一步提高多音字的准确度;

Pinyin

主页:http://overtrue.me/pinyin

基于CC-CEDICT词典的中文转拼音工具, 更准确的汉字转拼音解决方案。 CC-CEDICT.

use \Overtrue\Pinyin;

echo Pinyin::pinyin('带着希望去旅行,比到达终点更美好');
// dài zhe xī wàng qù lǔ xíng bǐ dào dá zhōng diǎn gèng měi hǎo

//多音字
// 了
Pinyin::pinyin('了然'); // liǎo rán
Pinyin::pinyin('来了'); // lái le

// 还
Pinyin::pinyin('还有'); // hái yǒu
Pinyin::pinyin('交还'); // jiāo huán

// 什
Pinyin::pinyin('什么'); // shén me
Pinyin::pinyin('什锦'); // shí jǐn

// 便
Pinyin::pinyin('便当'); // biàn dāng
Pinyin::pinyin('便宜'); // pián yí

// 剥
Pinyin::pinyin('剥皮'); // bāo pí
Pinyin::pinyin('剥皮器'); // bō pí qì

// 不
Pinyin::pinyin('赔不是'); // péi bú shi
Pinyin::pinyin('跑了和尚,跑不了庙'); // pǎo le hé shàng , pǎo bù liǎo miào

// 降
Pinyin::pinyin('降温'); // jiàng wēn
Pinyin::pinyin('投降'); // tóu xiáng

// 都
Pinyin::pinyin('首都'); // shǒu dū
Pinyin::pinyin('都什么年代了'); // dōu shén me nián dài le

// 乐
Pinyin::pinyin('快乐'); // kuài lè
Pinyin::pinyin('音乐'); // yīn yuè

// 长
Pinyin::pinyin('成长'); // chéng zhǎng
Pinyin::pinyin('长江'); // cháng jiāng

// 难
Pinyin::pinyin('难民'); // nàn mín
Pinyin::pinyin('难过'); // nán guò
...

安装

  1. 使用 Composer 安装:
composer require overtrue/pinyin >=1.4

或者在你的项目composer.json加入:

{
    "require": {
        "overtrue/pinyin": ">=1.4"
    }
}
  1. 直接下载文件 src/Overtrue/Pinyin.php 引入到项目中。

使用

<?php
use \Overtrue\Pinyin;

//获取拼音
echo Pinyin::pinyin('带着希望去旅行,比到达终点更美好');
//或者: Overtrue\pinyin($string);
// dài zhe xī wàng qù lǔ xíng bǐ dào dá zhōng diǎn gèng měi hǎo

//获取首字母
echo Pinyin::letter('带着希望去旅行,比到达终点更美好');
// D Z X W Q L X B D D Z D G M H

设置

  • delimiter 分隔符,默认为一个空格 ‘ ‘;
  • traditional 繁体
  • accent 是否输出音调;
  • letter 只输出首字母,或者直接使用Pinyin::letter($string);
  • only_chinese 只保留$string中中文部分。

  • 全局设置:* Pinyin::set('delimiter', '-');

  • 临时设置:* Pinyin::pinyin($word, $settings) 在调用的方法后传参

example:


Pinyin::set('delimiter', '-');//全局
echo Pinyin::pinyin('带着希望去旅行,比到达终点更美好');

// dài-zhe-xī-wàng-qù-lǔ-xíng-bǐ-dào-dá-zhōng-diǎn-gèng-měi-hǎo

$setting = [
            'delimiter' => '-',
            'accent' => false,
           ];

echo Pinyin::pinyin('带着希望去旅行,比到达终点更美好', $setting);//这里的setting只是临时修改,并非全局设置

// dai-zhe-xi-wang-qu-lu-xing-bi-dao-da-zhong-dian-geng-mei-hao
Pinyin::set('accent', false);
echo Pinyin::pinyin('带着希望去旅行,比到达终点更美好');

// dai zhe xi wang qu lu xing bi dao da zhong dian geng mei hao

Contribution

欢迎提意见及完善补充词库 src/Overtrue/data/additional.php:kiss:

来自 http://overtrue.me/articles/2014/10/php-chinese-to-pinyin.html


 

php将汉字转成拼音

张映 发表于 2010-04-12

分类目录: php

标签:

  1. /** 
  2.  * exchange 
  3.  * 把GB2312的汉字,转成ASIIC码 
  4.  * $str var 这个参数传得内容是要转的汉字,这里的汉字必须是gb2312,或者gbk 
  5.  */  
  6. function exchange($str){  
  7.     $ret="";  
  8.     for($j=0;$j<160){  
  9.             $q=ord(substr($str,++$j,1));  
  10.             $p=$p*256+$q-65536;  
  11.         }  
  12.         $ret.=search_ping($p);  
  13.     }  
  14.     return $ret;  
  15. }  

 

  1. /** 
  2.  * search_ping 
  3.  * 把拼音和数字对应,并根据参数,找到拼音 
  4.  * $num int 汉字对应的数字 
  5.  */  
  6. function search_ping($num){  
  7.       $d=array(  
  8.       array("a",-20319),  
  9.       array("ai",-20317),  
  10.       array("an",-20304),  
  11.       array("ang",-20295),  
  12.       array("ao",-20292),  
  13.       array("ba",-20283),  
  14.       array("bai",-20265),  
  15.       array("ban",-20257),  
  16.       array("bang",-20242),  
  17.       array("bao",-20230),  
  18.       array("bei",-20051),  
  19.       array("ben",-20036),  
  20.       array("beng",-20032),  
  21.       array("bi",-20026),  
  22.       array("bian",-20002),  
  23.       array("biao",-19990),  
  24.       array("bie",-19986),  
  25.       array("bin",-19982),  
  26.       array("bing",-19976),  
  27.       array("bo",-19805),  
  28.       array("bu",-19784),  
  29.       array("ca",-19775),  
  30.       array("cai",-19774),  
  31.       array("can",-19763),  
  32.       array("cang",-19756),  
  33.       array("cao",-19751),  
  34.       array("ce",-19746),  
  35.       array("ceng",-19741),  
  36.       array("cha",-19739),  
  37.       array("chai",-19728),  
  38.       array("chan",-19725),  
  39.       array("chang",-19715),  
  40.       array("chao",-19540),  
  41.       array("che",-19531),  
  42.       array("chen",-19525),  
  43.       array("cheng",-19515),  
  44.       array("chi",-19500),  
  45.       array("chong",-19484),  
  46.       array("chou",-19479),  
  47.       array("chu",-19467),  
  48.       array("chuai",-19289),  
  49.       array("chuan",-19288),  
  50.       array("chuang",-19281),  
  51.       array("chui",-19275),  
  52.       array("chun",-19270),  
  53.       array("chuo",-19263),  
  54.       array("ci",-19261),  
  55.       array("cong",-19249),  
  56.       array("cou",-19243),  
  57.       array("cu",-19242),  
  58.       array("cuan",-19238),  
  59.       array("cui",-19235),  
  60.       array("cun",-19227),  
  61.       array("cuo",-19224),  
  62.       array("da",-19218),  
  63.       array("dai",-19212),  
  64.       array("dan",-19038),  
  65.       array("dang",-19023),  
  66.       array("dao",-19018),  
  67.       array("de",-19006),  
  68.       array("deng",-19003),  
  69.       array("di",-18996),  
  70.       array("dian",-18977),  
  71.       array("diao",-18961),  
  72.       array("die",-18952),  
  73.       array("ding",-18783),  
  74.       array("diu",-18774),  
  75.       array("dong",-18773),  
  76.       array("dou",-18763),  
  77.       array("du",-18756),  
  78.       array("duan",-18741),  
  79.       array("dui",-18735),  
  80.       array("dun",-18731),  
  81.       array("duo",-18722),  
  82.       array("e",-18710),  
  83.       array("en",-18697),  
  84.       array("er",-18696),  
  85.       array("fa",-18526),  
  86.       array("fan",-18518),  
  87.       array("fang",-18501),  
  88.       array("fei",-18490),  
  89.       array("fen",-18478),  
  90.       array("feng",-18463),  
  91.       array("fo",-18448),  
  92.       array("fou",-18447),  
  93.       array("fu",-18446),  
  94.       array("ga",-18239),  
  95.       array("gai",-18237),  
  96.       array("gan",-18231),  
  97.       array("gang",-18220),  
  98.       array("gao",-18211),  
  99.       array("ge",-18201),  
  100.       array("gei",-18184),  
  101.       array("gen",-18183),  
  102.       array("geng",-18181),  
  103.       array("gong",-18012),  
  104.       array("gou",-17997),  
  105.       array("gu",-17988),  
  106.       array("gua",-17970),  
  107.       array("guai",-17964),  
  108.       array("guan",-17961),  
  109.       array("guang",-17950),  
  110.       array("gui",-17947),  
  111.       array("gun",-17931),  
  112.       array("guo",-17928),  
  113.       array("ha",-17922),  
  114.       array("hai",-17759),  
  115.       array("han",-17752),  
  116.       array("hang",-17733),  
  117.       array("hao",-17730),  
  118.       array("he",-17721),  
  119.       array("hei",-17703),  
  120.       array("hen",-17701),  
  121.       array("heng",-17697),  
  122.       array("hong",-17692),  
  123.       array("hou",-17683),  
  124.       array("hu",-17676),  
  125.       array("hua",-17496),  
  126.       array("huai",-17487),  
  127.       array("huan",-17482),  
  128.       array("huang",-17468),  
  129.       array("hui",-17454),  
  130.       array("hun",-17433),  
  131.       array("huo",-17427),  
  132.       array("ji",-17417),  
  133.       array("jia",-17202),  
  134.       array("jian",-17185),  
  135.       array("jiang",-16983),  
  136.       array("jiao",-16970),  
  137.       array("jie",-16942),  
  138.       array("jin",-16915),  
  139.       array("jing",-16733),  
  140.       array("jiong",-16708),  
  141.       array("jiu",-16706),  
  142.       array("ju",-16689),  
  143.       array("juan",-16664),  
  144.       array("jue",-16657),  
  145.       array("jun",-16647),  
  146.       array("ka",-16474),  
  147.       array("kai",-16470),  
  148.       array("kan",-16465),  
  149.       array("kang",-16459),  
  150.       array("kao",-16452),  
  151.       array("ke",-16448),  
  152.       array("ken",-16433),  
  153.       array("keng",-16429),  
  154.       array("kong",-16427),  
  155.       array("kou",-16423),  
  156.       array("ku",-16419),  
  157.       array("kua",-16412),  
  158.       array("kuai",-16407),  
  159.       array("kuan",-16403),  
  160.       array("kuang",-16401),  
  161.       array("kui",-16393),  
  162.       array("kun",-16220),  
  163.       array("kuo",-16216),  
  164.       array("la",-16212),  
  165.       array("lai",-16205),  
  166.       array("lan",-16202),  
  167.       array("lang",-16187),  
  168.       array("lao",-16180),  
  169.       array("le",-16171),  
  170.       array("lei",-16169),  
  171.       array("leng",-16158),  
  172.       array("li",-16155),  
  173.       array("lia",-15959),  
  174.       array("lian",-15958),  
  175.       array("liang",-15944),  
  176.       array("liao",-15933),  
  177.       array("lie",-15920),  
  178.       array("lin",-15915),  
  179.       array("ling",-15903),  
  180.       array("liu",-15889),  
  181.       array("long",-15878),  
  182.       array("lou",-15707),  
  183.       array("lu",-15701),  
  184.       array("lv",-15681),  
  185.       array("luan",-15667),  
  186.       array("lue",-15661),  
  187.       array("lun",-15659),  
  188.       array("luo",-15652),  
  189.       array("ma",-15640),  
  190.       array("mai",-15631),  
  191.       array("man",-15625),  
  192.       array("mang",-15454),  
  193.       array("mao",-15448),  
  194.       array("me",-15436),  
  195.       array("mei",-15435),  
  196.       array("men",-15419),  
  197.       array("meng",-15416),  
  198.       array("mi",-15408),  
  199.       array("mian",-15394),  
  200.       array("miao",-15385),  
  201.       array("mie",-15377),  
  202.       array("min",-15375),  
  203.       array("ming",-15369),  
  204.       array("miu",-15363),  
  205.       array("mo",-15362),  
  206.       array("mou",-15183),  
  207.       array("mu",-15180),  
  208.       array("na",-15165),  
  209.       array("nai",-15158),  
  210.       array("nan",-15153),  
  211.       array("nang",-15150),  
  212.       array("nao",-15149),  
  213.       array("ne",-15144),  
  214.       array("nei",-15143),  
  215.       array("nen",-15141),  
  216.       array("neng",-15140),  
  217.       array("ni",-15139),  
  218.       array("nian",-15128),  
  219.       array("niang",-15121),  
  220.       array("niao",-15119),  
  221.       array("nie",-15117),  
  222.       array("nin",-15110),  
  223.       array("ning",-15109),  
  224.       array("niu",-14941),  
  225.       array("nong",-14937),  
  226.       array("nu",-14933),  
  227.       array("nv",-14930),  
  228.       array("nuan",-14929),  
  229.       array("nue",-14928),  
  230.       array("nuo",-14926),  
  231.       array("o",-14922),  
  232.       array("ou",-14921),  
  233.       array("pa",-14914),  
  234.       array("pai",-14908),  
  235.       array("pan",-14902),  
  236.       array("pang",-14894),  
  237.       array("pao",-14889),  
  238.       array("pei",-14882),  
  239.       array("pen",-14873),  
  240.       array("peng",-14871),  
  241.       array("pi",-14857),  
  242.       array("pian",-14678),  
  243.       array("piao",-14674),  
  244.       array("pie",-14670),  
  245.       array("pin",-14668),  
  246.       array("ping",-14663),  
  247.       array("po",-14654),  
  248.       array("pu",-14645),  
  249.       array("qi",-14630),  
  250.       array("qia",-14594),  
  251.       array("qian",-14429),  
  252.       array("qiang",-14407),  
  253.       array("qiao",-14399),  
  254.       array("qie",-14384),  
  255.       array("qin",-14379),  
  256.       array("qing",-14368),  
  257.       array("qiong",-14355),  
  258.       array("qiu",-14353),  
  259.       array("qu",-14345),  
  260.       array("quan",-14170),  
  261.       array("que",-14159),  
  262.       array("qun",-14151),  
  263.       array("ran",-14149),  
  264.       array("rang",-14145),  
  265.       array("rao",-14140),  
  266.       array("re",-14137),  
  267.       array("ren",-14135),  
  268.       array("reng",-14125),  
  269.       array("ri",-14123),  
  270.       array("rong",-14122),  
  271.       array("rou",-14112),  
  272.       array("ru",-14109),  
  273.       array("ruan",-14099),  
  274.       array("rui",-14097),  
  275.       array("run",-14094),  
  276.       array("ruo",-14092),  
  277.       array("sa",-14090),  
  278.       array("sai",-14087),  
  279.       array("san",-14083),  
  280.       array("sang",-13917),  
  281.       array("sao",-13914),  
  282.       array("se",-13910),  
  283.       array("sen",-13907),  
  284.       array("seng",-13906),  
  285.       array("sha",-13905),  
  286.       array("shai",-13896),  
  287.       array("shan",-13894),  
  288.       array("shang",-13878),  
  289.       array("shao",-13870),  
  290.       array("she",-13859),  
  291.       array("shen",-13847),  
  292.       array("sheng",-13831),  
  293.       array("shi",-13658),  
  294.       array("shou",-13611),  
  295.       array("shu",-13601),  
  296.       array("shua",-13406),  
  297.       array("shuai",-13404),  
  298.       array("shuan",-13400),  
  299.       array("shuang",-13398),  
  300.       array("shui",-13395),  
  301.       array("shun",-13391),  
  302.       array("shuo",-13387),  
  303.       array("si",-13383),  
  304.       array("song",-13367),  
  305.       array("sou",-13359),  
  306.       array("su",-13356),  
  307.       array("suan",-13343),  
  308.       array("sui",-13340),  
  309.       array("sun",-13329),  
  310.       array("suo",-13326),  
  311.       array("ta",-13318),  
  312.       array("tai",-13147),  
  313.       array("tan",-13138),  
  314.       array("tang",-13120),  
  315.       array("tao",-13107),  
  316.       array("te",-13096),  
  317.       array("teng",-13095),  
  318.       array("ti",-13091),  
  319.       array("tian",-13076),  
  320.       array("tiao",-13068),  
  321.       array("tie",-13063),  
  322.       array("ting",-13060),  
  323.       array("tong",-12888),  
  324.       array("tou",-12875),  
  325.       array("tu",-12871),  
  326.       array("tuan",-12860),  
  327.       array("tui",-12858),  
  328.       array("tun",-12852),  
  329.       array("tuo",-12849),  
  330.       array("wa",-12838),  
  331.       array("wai",-12831),  
  332.       array("wan",-12829),  
  333.       array("wang",-12812),  
  334.       array("wei",-12802),  
  335.       array("wen",-12607),  
  336.       array("weng",-12597),  
  337.       array("wo",-12594),  
  338.       array("wu",-12585),  
  339.       array("xi",-12556),  
  340.       array("xia",-12359),  
  341.       array("xian",-12346),  
  342.       array("xiang",-12320),  
  343.       array("xiao",-12300),  
  344.       array("xie",-12120),  
  345.       array("xin",-12099),  
  346.       array("xing",-12089),  
  347.       array("xiong",-12074),  
  348.       array("xiu",-12067),  
  349.       array("xu",-12058),  
  350.       array("xuan",-12039),  
  351.       array("xue",-11867),  
  352.       array("xun",-11861),  
  353.       array("ya",-11847),  
  354.       array("yan",-11831),  
  355.       array("yang",-11798),  
  356.       array("yao",-11781),  
  357.       array("ye",-11604),  
  358.       array("yi",-11589),  
  359.       array("yin",-11536),  
  360.       array("ying",-11358),  
  361.       array("yo",-11340),  
  362.       array("yong",-11339),  
  363.       array("you",-11324),  
  364.       array("yu",-11303),  
  365.       array("yuan",-11097),  
  366.       array("yue",-11077),  
  367.       array("yun",-11067),  
  368.       array("za",-11055),  
  369.       array("zai",-11052),  
  370.       array("zan",-11045),  
  371.       array("zang",-11041),  
  372.       array("zao",-11038),  
  373.       array("ze",-11024),  
  374.       array("zei",-11020),  
  375.       array("zen",-11019),  
  376.       array("zeng",-11018),  
  377.       array("zha",-11014),  
  378.       array("zhai",-10838),  
  379.       array("zhan",-10832),  
  380.       array("zhang",-10815),  
  381.       array("zhao",-10800),  
  382.       array("zhe",-10790),  
  383.       array("zhen",-10780),  
  384.       array("zheng",-10764),  
  385.       array("zhi",-10587),  
  386.       array("zhong",-10544),  
  387.       array("zhou",-10533),  
  388.       array("zhu",-10519),  
  389.       array("zhua",-10331),  
  390.       array("zhuai",-10329),  
  391.       array("zhuan",-10328),  
  392.       array("zhuang",-10322),  
  393.       array("zhui",-10315),  
  394.       array("zhun",-10309),  
  395.       array("zhuo",-10307),  
  396.       array("zi",-10296),  
  397.       array("zong",-10281),  
  398.       array("zou",-10274),  
  399.       array("zu",-10270),  
  400.       array("zuan",-10262),  
  401.       array("zui",-10260),  
  402.       array("zun",-10256),  
  403.       array("zuo",-10254)  
  404.      );  

echo exchange("张");

来自 http://blog.51yip.com/php/545.html

0
 




 

普通分类: