拼音库创建 php

主要实现从一个数据库中获取中文名称并获取所有可能拼音的的大写字母组合。然后和名称一起导入另外一个数据库

<?php
	//通过查找拼音表匹配每个汉子对应首字母
	function get_firstchar($keyword)
	{
	$array = array();
	$temp = "";
	$array = explode('[',file_get_contents("拼音库文本.txt"));
	//echo $array[3];
	for($i=0;$i<count($array);$i++){
		if(strstr($array[$i],$keyword) != null)
			$temp = $temp . strtoupper(substr($array[$i],0,1));
	//打印数组的元素的值
	//echo $array[$i],"<br>";
	}
	return $temp;
	}

	//排列组合函数,实现所有可能大写字母组合,比如中国银行大写拼写可能为“ZGYH”“ZGYX”
	error_reporting( E_ALL&~E_NOTICE );
	function get_new_arr(){
	$args = func_get_args();//取得所有传入参数的数组
	$arr = array();
	foreach($args as $k=>$v){
	if($args[$k+1]) {
	switch($k) {
	case 0:
	$arr[$k] = arr_pailie($v,$args[$k+1]);
	break;
	default:
	$arr[$k] = arr_pailie($arr[$k-1],$args[$k+1]);
	break;
	}
	}
	}
	$key = count($arr)-1;
	$res = implode('.',$arr[$key]);
	return $res;
	}
	function arr_pailie ($arr1, $arr2){
	$arr = array();
	$k = 0;
	foreach($arr1 as $k1=>$v1){
	foreach($arr2 as $k2=>$v2){
	$arr[$k] = $v1.",".$v2;
	$k++;
	}
	}
	return $arr;
	}
	//数据库连接,取出名称和标识
	$dbname="DB1";
	$servcon=mysql_connect(MySql数据库地址、用户名、账号);
	if(!$servcon){ die("Fail to connect to DataBase! Error:".mysql_error());}
	mysql_select_db($dbname,$servcon);
	$select = mysql_query("select Symbol,Name from smallsnapshoot");

	//数据库连接,将股票转换的结果直接输入到数据库stockdb的py_convert表中
	$dbname1="DB2";
	$servcon1=mysql_connect(<span style="font-family: Arial, Helvetica, sans-serif;">MySql数据库地址、用户名、账号</span>);
	if(!$servcon1){ die("Fail to connect to DataBase! Error:".mysql_error());}
	mysql_select_db($dbname1,$servcon1);
	//循环取源数据库每行名称、标识
	while($row = mysql_fetch_array($select)){

		//将汉字逐个输入进行查找并保存到$arr_list数组
		//$str = "平单银行";
		$str = $row["Name"];
		$len = mb_strlen($str,"utf-8");
		$arr_list = array();
		for($i=0;$i<$len;$i++){
			$arr[] = mb_substr($str,$i,1,"utf-8");
			$arr_list[$i] = get_firstchar($arr[$i]);
		}
		//echo $arr_list[3];
		//循环取每个字符数组字母进行匹配保存到$arr_str中

		//排列组合函数调用,先将字符串数组的每个元素转换为对就数组,因为本环境名称最多为三个字或四个字
			$arr1 = array();
			$arr2 = array();
			$arr3 = array();
			$arr1 = str_split($arr_list[0]);
			$arr2 = str_split($arr_list[1]);
			$arr3 = str_split($arr_list[2]);
			if(count($arr_list) == 4){
				$arr4 = array();
				$arr4 = str_split($arr_list[3]);
				$result= get_new_arr($arr1,$arr2,$arr3,$arr4);
				//echo count($arr_list);
			}
			else{
				$result= get_new_arr($arr1,$arr2,$arr3);
				//echo count($arr_list);
			}
		//echo $result; 

		//对组合数据转化为数组并删除重复数组
		$arr_str = array();
		$arr_str = explode('.',$result);
		//echo $arr_str[1];
		for($i=0;$i<count($arr_str);$i++){
			$arr_str[$i] =str_replace(",","",$arr_str[$i]);
		}
		$membercout = count($arr_str);
		$arr_str = array_unique($arr_str);
		//print_r($arr_str);
		for($i=0;$i<$membercout;$i++){
			if($arr_str[$i] != null){
				//echo $arr_str[$i],"<br />";
			//$str_end .= $arr_str[$i];
			$py_insert = "INSERT INTO py_convert(py_short_name, py_stock_name, py_stock_symbol) VALUE('$arr_str[$i]', '$row["Name"]', '$row["Symbol"]')";
			$result = mysql_query($py_insert) or die("Error in query: $query. ".mysql_error());
			}
		}
	//	echo $str_end;
	}
	mysql_close($servcon);
	mysql_close($servcon1);
?>
建立数据库DB2中拼音表如下:
<pre name="code" class="php"><?php
$con=mysql_connect(数据库名称、账号、密码);
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

// Create database
/*if (mysql_query("CREATE DATABASE my_db",$con))
  {
  echo "Database created";
  }
else
  {
  echo "Error creating database: " . mysql_error();
  }
*/

// Create table in my_db database
$dbname="DB2";
mysql_select_db($dbname,$con);
$sql = "CREATE TABLE py_convert
(
  `py_id` int(10) NOT NULL auto_increment,
  `py_short_name` varchar(10),
  `py_name` varchar(10),
  `py_symbol` varchar(16),
  PRIMARY KEY  (`py_id`)
)";
mysql_query($sql,$con);

mysql_close($con);
?>

因为涉及的为汉字名称,所以采用的编辑环境为UTF-8。其中排列组合函数是借鉴的别人的,自己也想了半天效果不好,关键是数据逻辑思维不清楚,可见数据思维的重要性。

自己也是边学边做,php函数的调用不是很熟练,以后要加强编程方面练习。有写得不好的地方,欢迎各位大神指正,互相交流,共同进步!

时间: 2024-10-12 17:00:11

拼音库创建 php的相关文章

linux下的静态库创建与查看,及如何查看某个可执行依赖于哪些动态库

linux下的静态库创建与查看,及如何查看某个可执行依赖于哪些动态库 创建静态库:ar -rcs test.a *.o查看静态库:ar -tv test.a解压静态库:ar -x test.a 查看程序依赖的动态库:readelf -a xxx|grep library如:可以看到,下面的交叉程序hello执行依赖于如下两个动态库.[email protected]:~/test$ arm-none-linux-gnueabi-readelf -a hello|grep "library&quo

MDT 2013 从入门到精通之驱动库创建

之前在每个群里活跃的时候总是能看到大家提出有关MDT驱动添加后类似报错的问题,其实生产环境中每个使用MDT的朋友都会遇到此类问题,本文主要介绍有关MDT新添加驱动如何通过驱动库创建排除驱动问题等: 一.驱动库创建: 1.1.打开Advanced Configuration,选择Selection Profiles,鼠标右键选择New Selection Profile: 1.2.输入驱动库描述信息: 1.3.勾选对应品牌各型号笔记本.台式机驱动文件夹: 1.4.确定相关信息: 1.5.完成创建:

关于 Overtrue 的拼音库 overtrue/pinyin 为何 travis 为 error【社交系统研发日记十】

什么是ThinkSNS ? ThinkSNS(简称TS),一款全平台综合性社交系统,为国内外大中小企业和创业者提供社会化软件研发及技术解决方案,目前最新版本为ThinkSNS+(简称TS+).社交系统ThinkSNS团队拥有超过九年的移动互联网软件/网站/APP开发经验,涉及行业:粉丝社群.直播互动.移动医疗.电子商务.生活服务.在线教育.旅游出行.移动办公.电子杂志.休闲娱乐.企业信息等.我们的服务包括快速建站.提供技术及产品解决方案.技术支持维护,除此之外,如果你软件方案足够好,我们还能提供

Java汉字转拼音库,Pinyin4j

pinyin4j是一个支持将简体和繁体中文转换到成拼音的Java开源类库,作者是Li Min ([email protected]).以下是一些具体的介绍和使用方式.         1.pinyin4j的官方下载地址http://sourceforge.net/projects/pinyin4j/files/ 2.下载解压后的目录结构及说明如下 (1)    doc : pinyin4j的api文档 (2)    lib : pinyin4j的jar包 (3)    src : pinyin4

Qt动态连接库/静态连接库创建与使用,QLibrary动态加载库

版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:Qt动态连接库/静态连接库创建与使用,QLibrary动态加载库     本文地址:http://techieliang.com/2017/12/680/ 文章目录 1. 动态连接库创建与使用  1.1. 项目创建  1.2. 调用-使用.h文件 2. 静态库创建及使用  2.1. 创建  2.2. 使用 3. QLibrary动态加载动态库  3.1. 介绍  3.2. 范例  3.3.

组件化开发-001-本地私有库抽取和远程私有库创建

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC" } 1  组件化:组件化最大目的是为了降低功能.项目与项目组件之间很强的依赖,降低耦合度,抽取时优先抽取基础组件,全局属性,封装的AFN等. 2 组件化优缺点: p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Yuanti SC" } p.p2 { margin: 0.0px 0

关于 Overtrue 的拼音库 overtrue/pinyin 为何 travis 为 error

什么是ThinkSNS ? ThinkSNS(简称TS),一款全平台综合性社交系统,为国内外大中小企业和创业者提供社会化软件研发及技术解决方案. 1.png 这是 https://github.com/overtrue/pinyin 首页 README 中的持续集成状态. 之前有朋友问我,这个 travis 状态时 error 能用么?肯定是能用,我们来看下 travis 上什么地方错误了: 2.png 已经显示出来了,其中单元测试失败的是 php 5.5 和 php 5.6 我们随便点击一个进

Git使用(二)版本库创建及文件修改

一.创建版本库 1.安装完成后,在开始菜单里找到"Git"->"Git Bash",蹦出一个类似命令行窗口的东西,就说明Git安装成功! 安装完成后,还需要最后一步设置,在命令行输入: $ git config --global user.name "Your Name" $ git config --global user.email "[email protected]" 因为Git是分布式版本控制系统,所以,每个机

自己动手写客户端UI库——创建第一个控件

在上一篇文章中我们主要讲了C#如何和JS通信, 这一篇文章中,我们将创建一个最基础的Button控件 WUI库中控件的继承机制 我们先解释最简单的继承机制,以后WUI库的继承机制会比这个复杂的多 第一:PanelMain类 我们在上一篇中说了,PanelMain是一个特殊的Panel,每一个用户程序都应该自己实现一个PanelMain类的子类,用户把这个子类的实例交给WUI库,WUI库把这个实例当作第一个容器控件添加到窗体中,WUI库告诉用户什么时候这个用户控件创建完毕,用户可以在PanelMa