❶ php mysql查詢後按拼音首字母分組排序
SELECT name FROM `user` ORDER BY CONVERT( name USING gbk ) ASC
直接就坦毀是按漢字首掘信喊個字的判野首字母排序,自動都會分組了啊。
❷ php中怎樣獲取漢字拼音的首字母
//漢字轉拼音(生僻字不支持)
$pinyin=$this->utf8_to("我是中文");
//漢字轉拼音(生僻字不支持)
function(){
echo$this->utf8_to("我是個好人");
}
/**
*以下是中文轉拼音
*@param$s
*@parambool$isfirst
*@returnstring
*/
publicstaticfunctionutf8_to($s,$isfirst=false){
returnself::to(self::utf8_to_gb2312($s),$isfirst);
}
publicstaticfunctionutf8_to_gb2312($s){
returniconv('UTF-8','GB2312//IGNORE',$s);
}
//字元串必須為GB2312編碼
publicstaticfunctionto($s,$isfirst=false){
$res='';
$len=strlen($s);
$pinyin_arr=self::get_pinyin_array();
for($i=0;$i<$len;$i++){
$ascii=ord($s{$i});
if($ascii>0x80){
$ascii2=ord($s{++$i});
$ascii=$ascii*256+$ascii2-65536;
}
if($ascii<255&&$ascii>0){
if(($ascii>=48&&$ascii<=57)||($ascii>=97&&$ascii<=122)){
$res.=$s{$i};//0-9a-z
}elseif($ascii>=65&&$ascii<=90){
$res.=strtolower($s{$i});//A-Z
}else{
$res.='_';
}
}elseif($ascii<-20319||$ascii>-10247){
$res.='_';
}else{
foreach($pinyin_arras$py=>$asc){
if($asc<=$ascii){
$res.=$isfirst?$py{0}:$py;
break;
}
}
}
}
return$res;
}
publicstaticfunctionto_first($s){
$ascii=ord($s{0});
if($ascii>0xE0){
$s=self::utf8_to_gb2312($s{0}.$s{1}.$s{2});
}elseif($ascii<0x80){
if($ascii>=65&&$ascii<=90){
returnstrtolower($s{0});
}elseif($ascii>=97&&$ascii<=122){
return$s{0};
}else{
returnfalse;
}
}
if(strlen($s)<2){
returnfalse;
}
$asc=ord($s{0})*256+ord($s{1})-65536;
if($asc>=-20319&&$asc<=-20284)return'a';
if($asc>=-20283&&$asc<=-19776)return'b';
if($asc>=-19775&&$asc<=-19219)return'c';
if($asc>=-19218&&$asc<=-18711)return'd';
if($asc>=-18710&&$asc<=-18527)return'e';
if($asc>=-18526&&$asc<=-18240)return'f';
if($asc>=-18239&&$asc<=-17923)return'g';
if($asc>=-17922&&$asc<=-17418)return'h';
if($asc>=-17417&&$asc<=-16475)return'j';
if($asc>=-16474&&$asc<=-16213)return'k';
if($asc>=-16212&&$asc<=-15641)return'l';
if($asc>=-15640&&$asc<=-15166)return'm';
if($asc>=-15165&&$asc<=-14923)return'n';
if($asc>=-14922&&$asc<=-14915)return'o';
if($asc>=-14914&&$asc<=-14631)return'p';
if($asc>=-14630&&$asc<=-14150)return'q';
if($asc>=-14149&&$asc<=-14091)return'r';
if($asc>=-14090&&$asc<=-13319)return's';
if($asc>=-13318&&$asc<=-12839)return't';
if($asc>=-12838&&$asc<=-12557)return'w';
if($asc>=-12556&&$asc<=-11848)return'x';
if($asc>=-11847&&$asc<=-11056)return'y';
if($asc>=-11055&&$asc<=-10247)return'z';
returnfalse;
}
publicstaticfunctionget_pinyin_array(){
static$py_arr;
if(isset($py_arr))return$py_arr;
$k='a|ai|an|ang|ao|ba||ban|bang|bao|bei|ben|beng|bi|bian|biao|bie|bin|bing|bo|bu|ca|cai|can|cang|cao|ce|ceng|cha|chai|chan|chang|chao|che|chen|cheng|chi|chong|chou|chu|chuai|chuan|chuang|chui|chun|chuo|ci|cong|cou|cu|cuan|cui|cun|cuo|da|dai|dan|dang||de|deng|di|dian|diao|die|ding|diu|dong|dou||an|i|n|o|e|en|er|fa|fan|fang|fei|fen|feng|fo|fou|fu|ga|gai|gan|gang|gao|ge|gei|gen|geng|gong|gou|gu|gua|guai|guan|guang|gui|gun|guo|ha|hai|han|hang|hao|he|hei|hen|heng|hong|hou|hu|hua|huai|huan|huang|hui|hun|huo|ji|jia|jian|jiang|jiao|jie|jin|jing|jiong|jiu|ju|juan|jue|jun|ka|kai|kan|kang|kao|ke|ken|keng|kong|kou|ku|kua|kuai|kuan|kuang|kui|kun|kuo|la|lai|lan|lang|lao|le|lei|leng|li|lia|lian|liang|liao|lie|lin|ling|liu|long|lou|lu|lv|luan|lue|lun|luo|ma|mai|man|mang|mao|me|mei|men|meng|mi|mian|miao|mie|min|ming|miu|mo|mou|mu|na|nai|nan|nang|nao|ne|nei|nen|neng|ni|nian|niang|niao|nie|nin|ning|niu|nong|nu|nv|nuan|nue|nuo|o|ou|pa|pai|pan|pang|pao|pei|pen|peng|pi|pian|piao|pie|pin|ping|po|pu|qi|qia|qian|qiang|qiao|qie|qin|qing|qiong|qiu|qu|quan|que|qun|ran|rang|rao|re|ren|reng|ri|rong|rou|ru|ruan|rui|run|ruo|sa|sai|san|sang|sao|se|sen|seng|sha|shai|shan|shang|shao|she|shen|sheng|shi|shou|shu|shua|shuai|shuan|shuang|shui|shun|shuo|si|song|sou|su|suan|sui|sun|suo|ta|tai|tan|tang|tao|te|teng|ti|tian|tiao|tie|ting|tong|tou|tu|tuan|tui|tun|tuo|wa|wai|wan|wang|wei|wen|weng|wo|wu|xi|xia|xian|xiang|xiao|xie|xin|xing|xiong|xiu|xu|xuan|xue|xun|ya|yan|yang|yao|ye|yi|yin|ying|yo|yong|you|yu|yuan|yue|yun|za|zai|zan|zang|zao|ze|zei|zen|zeng|zha|zhai|zhan|zhang|zhao|zhe|zhen|zheng||zhong|zhou|zhu|zhua|zhuai|zhuan|zhuang|zhui|zhun|zhuo|zi|zong|zou|zu|zuan|zui|zun|zuo';
$v='-20319|-20317|-20304|-20295|-20292|-20283|-20265|-20257|-20242|-20230|-20051|-20036|-20032|-20026|-20002|-19990|-19986|-19982|-19976|-19805|-19784|-19775|-19774|-19763|-19756|-19751|-19746|-19741|-19739|-19728|-19725|-19715|-19540|-19531|-19525|-19515|-19500|-19484|-19479|-19467|-19289|-19288|-19281|-19275|-19270|-19263|-19261|-19249|-19243|-19242|-19238|-19235|-19227|-19224|-19218|-19212|-19038|-19023|-19018|-19006|-19003|-18996|-18977|-18961|-18952|-18783|-18774|-18773|-18763|-18756|-18741|-18735|-18731|-18722|-18710|-18697|-18696|-18526|-18518|-18501|-18490|-18478|-18463|-18448|-18447|-18446|-18239|-18237|-18231|-18220|-18211|-18201|-18184|-18183|-18181|-18012|-17997|-17988|-17970|-17964|-17961|-17950|-17947|-17931|-17928|-17922|-17759|-17752|-17733|-17730|-17721|-17703|-17701|-17697|-17692|-17683|-17676|-17496|-17487|-17482|-17468|-17454|-17433|-17427|-17417|-17202|-17185|-16983|-16970|-16942|-16915|-16733|-16708|-16706|-16689|-16664|-16657|-16647|-16474|-16470|-16465|-16459|-16452|-16448|-16433|-16429|-16427|-16423|-16419|-16412|-16407|-16403|-16401|-16393|-16220|-16216|-16212|-16205|-16202|-16187|-16180|-16171|-16169|-16158|-16155|-15959|-15958|-15944|-15933|-15920|-15915|-15903|-15889|-15878|-15707|-15701|-15681|-15667|-15661|-15659|-15652|-15640|-15631|-15625|-15454|-15448|-15436|-15435|-15419|-15416|-15408|-15394|-15385|-15377|-15375|-15369|-15363|-15362|-15183|-15180|-15165|-15158|-15153|-15150|-15149|-15144|-15143|-15141|-15140|-15139|-15128|-15121|-15119|-15117|-15110|-15109|-14941|-14937|-14933|-14930|-14929|-14928|-14926|-14922|-14921|-14914|-14908|-14902|-14894|-14889|-14882|-14873|-14871|-14857|-14678|-14674|-14670|-14668|-14663|-14654|-14645|-14630|-14594|-14429|-14407|-14399|-14384|-14379|-14368|-14355|-14353|-14345|-14170|-14159|-14151|-14149|-14145|-14140|-14137|-14135|-14125|-14123|-14122|-14112|-14109|-14099|-14097|-14094|-14092|-14090|-14087|-14083|-13917|-13914|-13910|-13907|-13906|-13905|-13896|-13894|-13878|-13870|-13859|-13847|-13831|-13658|-13611|-13601|-13406|-13404|-13400|-13398|-13395|-13391|-13387|-13383|-13367|-13359|-13356|-13343|-13340|-13329|-13326|-13318|-13147|-13138|-13120|-13107|-13096|-13095|-13091|-13076|-13068|-13063|-13060|-12888|-12875|-12871|-12860|-12858|-12852|-12849|-12838|-12831|-12829|-12812|-12802|-12607|-12597|-12594|-12585|-12556|-12359|-12346|-12320|-12300|-12120|-12099|-12089|-12074|-12067|-12058|-12039|-11867|-11861|-11847|-11831|-11798|-11781|-11604|-11589|-11536|-11358|-11340|-11339|-11324|-11303|-11097|-11077|-11067|-11055|-11052|-11045|-11041|-11038|-11024|-11020|-11019|-11018|-11014|-10838|-10832|-10815|-10800|-10790|-10780|-10764|-10587|-10544|-10533|-10519|-10331|-10329|-10328|-10322|-10315|-10309|-10307|-10296|-10281|-10274|-10270|-10262|-10260|-10256|-10254';
$key=explode('|',$k);
$val=explode('|',$v);
$py_arr=array_combine($key,$val);
arsort($py_arr);
return$py_arr;
}
❸ php 按首字母 列出分類及其相應信息
建議數據表裡增加一個分類的首字母欄位 first_letter,
id title movietype first_letter
1 戰狼傳說 港台影視 G
....
....
21 三國演義03 大陸影視 D
然後根據 first_letter進行聚合操作,就可以啦.
具體代碼我就不寫了,你自己加工一下
❹ 求php獲取首字母方法
function($str){
$s1=iconv('UTF-8','gb2312',$str);
$s2=iconv('gb2312','UTF-8',$s1);
$s=$s2==$str?$s1:$str;
$asc=ord($s{0})*256+ord($s{1})-65536;
if($asc>=-20319&&$asc<=-20284)return'a';
if($asc>=-20283&&$asc<=-19776)return'b';
if($asc>=-19775&&$asc<=-19219)return'c';
if($asc>=-19218&&$asc<=-18711)return'd';
if($asc>=-18710&&$asc<=-18527)return'e';
if($asc>=-18526&&$asc<=-18240)return'f';
if($asc>=-18239&&$asc<=-17923)return'g';
if($asc>=-17922&&$asc<=-17418)return'h';
if($asc>=-17417&&$asc<=-16475)return'j';
if($asc>=-16474&&$asc<=-16213)return'k';
if($asc>=-16212&&$asc<=-15641)return'l';
if($asc>=-15640&&$asc<=-15166)return'm';
if($asc>=-15165&&$asc<=-14923)return'n';
if($asc>=-14922&&$asc<=-14915)return'o';
if($asc>=-14914&&$asc<=-14631)return'p';
if($asc>=-14630&&$asc<=-14150)return'q';
if($asc>=-14149&&$asc<=-14091)return'r';
if($asc>=-14090&&$asc<=-13319)return's';
if($asc>=-13318&&$asc<=-12839)return't';
if($asc>=-12838&&$asc<=-12557)return'w';
if($asc>=-12556&&$asc<=-11848)return'x';
if($asc>=-11847&&$asc<=-11056)return'y';
if($asc>=-11055&&$asc<=-10247)return'z';
returnnull;
};
這是一個傳入漢字,通過漢字的ASCII碼來判斷漢字的首字母的方法。已經調試,可以直接使用。望測試。
❺ PHP實現搜索查詢功能的方法技巧
下面是首頁顯示數據表package中的內容,但是有個條件,顯示在首頁的內容還必須是 :欄位status=0,且printing=0的數據才能在首頁列表中顯示出來。
頁面上有一個“搜索”功能,輸入條件後就會根據條件來進行查詢。
一般的搜索的話,只要在首頁顯示列表方法index()中給一個:
?
$map=array();//初始化查詢條件
$map=$this->_search();//調用查詢方法
$total = $this->Model->where ($map)->count(); //這個主要是用來計算頁面顯示數據條數的
if ($total == 0) {
$_list = '';
} else {
$_list = $this->Model->where ($map)->limit( $post_data ['first'] . ',' . $post_data ['rows'] )->select();
}
然後,就是寫一個_search():
protected function _search(){
$map = array ();
$post_data = I ( 'post.' );
if ($post_data ['packageid'] != '') {
$map ['packageid'] = array (
'like',
'%' . $post_data ['packageid'] . '%'
);
}
return $map;
}
最後,在設置的“搜索”菜單中,調用這個搜索方法。
但是,這個搜索的.同時,還要確保在欄位status=0,且printing=0的數據中進行搜索。
這個限制條件該加在什麼地方。各種嘗試和查詢後,才知道。限制條件直接加在SQL語句中就行了(如下紅色的地方)。(我自己試的時候一直在如下藍色的地方加條件,屢試屢敗!)
$map=array();
$map=$this->_search();
$total = $this->Model->where ($map)->where(array('status' =>0,'print_status'=>0))->count();
if ($total == 0) {
$_list = '';
} else {
$_list = $this->Model->where ($map)->where(array('status' =>0,'print_status'=>0))->limit( $post_data ['first'] . ',' . $post_data ['rows'] )->select();
}
❻ php 中文轉拼音首字母問題
原始代碼有些問題,我做了些更改,原地址github 的 chenall/chenall/blob/master/php/tools/ZH-cn_TO_pinyin.php
<?php
/*
中文漢字轉拼音首字母的PHP簡易實現方法.
要求:只能是GB2312碼表裡面中文字元
轉換得到字元串對應的拼音首字母大寫.
用法:
echozh2py::conv('Chinese中華人民共和國');//ChineseZHRMGHG
或
$py=newzh2py;
echo$py->conv('Chinese中華人民共和國');//ChineseZHRMGHG
*/
classzh2py
{
//根據漢字區位表
//我們可以看到從16-55區之間是按拼音字母排序的,所以我們只需要判斷某個漢字的區位碼就可以得知它的拼音首字母.
//區位表第一部份,按拼音字母排序的.
//16區-55區
/*
'A'=>0xB0A1,'B'=>0xB0C5,'C'=>0xB2C1,'D'=>0xB4EE,'E'=>0xB6EA,'F'=>0xB7A2,'G'=>0xB8C1,'H'=>0xB9FE,
'J'=>0xBBF7,'K'=>0xBFA6,'L'=>0xC0AC,'M'=>0xC2E8,'N'=>0xC4C3,'O'=>0xC5B6,'P'=>0xC5BE,'Q'=>0xC6DA,
'R'=>0xC8BB,'S'=>0xC8F6,'T'=>0xCBFA,'W'=>0xCDDA,'X'=>0xCEF4,'Y'=>0xD1B9,'Z'=>0xD4D1
*/
privatestatic$FirstTable=array(
0xB0C5,0xB2C1,0xB4EE,0xB6EA,0xB7A2,0xB8C1,0xB9FE,0xBBF7,0xBFA6,0xC0AC,0xC2E8,
0xC4C3,0xC5B6,0xC5BE,0xC6DA,0xC8BB,0xC8F6,0xCBFA,0xCDDA,0xCEF4,0xD1B9,0xD4D1,0xD7FA
);
privatestatic$FirstLetter="ABCDEFGHJKLMNOPQRSTWXYZ";
//區位表第二部份,不規則的,下面的字母是每個區裡面對應字的拼音首字母.從網上查詢整理出來的,可能會有部份錯誤.
//56區-87區
privatestatic$SecondTable=array(
"JWRDZLSYMRYPYWWCCKZNKYYG",
"KBPHFFSSTYBGMXLPBYLLBHLX",
"DZBXGZNZCPWHWXHQKMWFBPBY",
"TNMAYDDKSSNGYCSGXLYZAYPN",
"QYRBCJTHZTQFRXQHXMQJCJLY",
"JZSRMEBWHJLBJSLYYSMDXLCL",
"QGSZYQYAXBKYSECJSZNSLYZH",
"GMMCLGWZSZXZJFZNMLZZTHCS",
"SPRCHNWJNLHLYYQYYWZPTCZG",
"ZJQSQQAGMNYXPFRKSSBJLYXY",
"CWKCCSBNHCPDYZNFCYYTYCKX",
"DMGBWHWLGSLLYSDLMLXPTHMJ",
"TPMHYXLCHLHLZYLXGSSSSTCL",
"HTZKZJECXJCJNMFBYCSFYWYB",
"XHPLQKZCZWALSBCZJXSYZGWK",
"LDDPMJEGXYHYLXHLQYQHKYCW",
"QTTJHHHJLJAXFGFJZSLCFDQZ",
"LPDJBYREGKLZYZHLYSZQLZNW",
"FCJXDYGJQJJPMGWGJJJPKQSB",
"YFYZDJCNMWESCYGLBTZZGMSS",
"JHFSSXZQHFZMZCZTQCXZXRTT",
"BKZFFXMKDMDSYYSZCMLJDSYN",
"XTBNPDKLEYCJNYCDYKZTDHQH",
"LPCQDHZYCBZSCZBZMSLJFLKR",
"XJYYZLWCXSZFGWYYDLYHCLJS",
"LZCSHLTOLJNMDDDLNGKATHQH",
"PTQWLMCRNFKKFSYYLQBMQAMM",
"ZRQTBDKYXZKHHGFLBCSMDLDG",
"HYMZQQYDFQJJLZZNZJCDGZYG",
"PQCJPFCZLCLZXZDMXMPHJSGZ",
"GSHJQLZFKCGNNNSZFDEQFHBS",
"MQASLDCYXYQDLQCAFYWYXQHZ",
);
publicstaticfunctionutf8_to_gbk($string)//編碼轉換,必須轉換成GB2312字元,這里只是簡單的判斷並不是很准確,可以自己寫一個.
{
if(mb_check_encoding($string,'gb2312'))
return$string;
if(function_exists('iconv'))
returniconv("utf-8","gb2312//IGNORE",$string);
returnmb_convert_encoding($string,'gb2312','utf-8');
}
publicstaticfunctionconv($str)
{
$str=self::utf8_to_gbk($str);
$len=strlen($str);
$newStr='';
for($i=0;$i<$len;++$i)
{
$H=ord($str[$i]);
$L=ord($str[$i+1]);
//字元集非法
if($H<0xB0||$L<0xA1||$H>0xF7||$L==0xFF)
{
$newStr.=$str[$i];
continue;
}
if($H<0xD8)//($H>=0xB0&&$H<=0xD7)//查詢文字在一級漢字區(16-55)
{
$W=($H<<8)|$L;
foreach(self::$FirstTableas$key=>$value)
{
if($W<$value)
{
$newStr.=self::$FirstLetter[$key];
break;
}
}
}
else//if(H>=0xD8&&H<=0xF7)//查詢中文在二級漢字區(56-87)
$newStr.=self::$SecondTable[$H-0xD8][$L-0xA1];
++$i;
}
return$newStr;
}
}
echozh2py::conv('妃');//F
❼ 怎麼在網頁上用PHP做個搜索功能
通過from表單,將查詢的關鍵詞,通過 like 跟數據進行模糊查詢對比x0dx0a從topics表中查詢欄位subject與傳進來的參數'$_POST['topic']進行比較模糊查詢x0dx0a設subject欄位數據為:數學,英語,物理,化學,英文x0dx0a$subject=$_POST['topic']; x0dx0a$sql = "select * from topics where subject like '%" .$subject. "%'";x0dx0a$result = mysql_query($sql);x0dx0a若從表單提交的『topic』值為「學」,得到的結果將是:數學,化學x0dx0a多個欄位匹配查詢:x0dx0a$sql = "select id,subject from topics where (id like '%" .$id. "%') or (name like '%" .$name. "%') or (subject like '%" .$subject. "%') order by id desc";x0dx0a結果依據欄位id的順序