ホームページ  >  記事  >  バックエンド開発  >  PHPは中国語文字列の最初の文字ピンイン文字を取得します

PHPは中国語文字列の最初の文字ピンイン文字を取得します

WBOY
WBOYオリジナル
2016-07-25 08:42:141006ブラウズ
  1. $str="これは一测试程序1";
  2. echo getFirstCharCode($str);
  3. function getFirstCharCode($str){
  4. $str= iconv("UTF-8","gb2312" , $str);
  5. $targetChar='*';
  6. $i=0;
  7. while($i $tmp=bin2hex(substr($str,$i,1)) ;
  8. if($tmp>='B0'){ //汉字の始まり
  9. $t=getLetter(hexdec(bin2hex(substr($str,$i,2))));
  10. $targetChar=$t== -1 ? '*' : $t ;
  11. //printf("%c",$t==-1 ? '*' : $t );
  12. Break;
  13. //$i+=2;
  14. }
  15. else{
  16. $ targetChar=substr($str,$i,1);
  17. break;
  18. //printf("%s",substr($str,$i,1));
  19. //$i++;
  20. }
  21. }
  22. if(is_numeric($targetChar)){
  23. return chr($targetChar);
  24. }
  25. else{
  26. return $targetChar;
  27. }
  28. }
  29. function getLetter($num){
  30. $limit=array( //gb2312 拼音排順
  31. array(45217,45252), //A
  32. array(45253,45760), //B
  33. array(45761,46317), //C
  34. array(46318,46825), //D
  35. array(46826, 47009), //E
  36. 配列(47010,47296), //F
  37. 配列(47297,47613), //G
  38. 配列(47614,48118), //H
  39. 配列(0,0), //I
  40. 配列(48119,49061), //J
  41. 配列(49062,49323), //K
  42. 配列(49324,49895), //L
  43. 配列(49896,50370), //M
  44. 配列(50371,50613) ), //N
  45. 配列(50614,50621), //O
  46. 配列(50622,50905), //P
  47. 配列(50906,51386), //Q
  48. 配列(51387,51445), //R
  49. array(51446,52217), //S
  50. array(52218,52697), //T
  51. array(0,0), //U
  52. array(0,0), //V
  53. array(52698,52979) , //W
  54. 配列(52980,53688), //X
  55. 配列(53689,54480), //Y
  56. 配列(54481,55289), //Z
  57. );
  58. $char_index=65;
  59. foreach($ $k=>$v){
  60. if($num>=$v[0] && $num $char_index+=$k;
  61. return $char_index;
  62. }
  63. }
  64. return -1;
  65. }
复制代

php


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。