ホームページ >バックエンド開発 >PHPチュートリアル >ピンインライブラリ作成php
ピンイン ライブラリの作成 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 関数の呼び出しにあまり習熟していないので、今後はさらにプログラミングを練習する必要があります。文章が下手なところがあれば、ぜひ修正して、コミュニケーションをとりながら、一緒に進歩していきましょう!