> 백엔드 개발 > PHP 튜토리얼 > php mysql에서 utf8로 인코딩된 한자를 병음으로 변환

php mysql에서 utf8로 인코딩된 한자를 병음으로 변환

WBOY
풀어 주다: 2016-07-25 08:53:43
원래의
1211명이 탐색했습니다.
  1. require_once('pinyin_table.php');

  2. 함수 get_pinyin_array($string)
  3. {
  4. 전역 $pinyin_table;
  5. $flow = array();
  6. for ($i=0;$i {
  7. if (ord($string[$i]) >= 0x81 및 ord($string[$i]) <= 0xfe)
  8. {
  9. $h = ord($string[$i]);
  10. if (isset($string[$i 1]))
  11. {
  12. $i ;
  13. $l = ord($string[$i]);
  14. if (isset($ pinyin_table[$h][$l]))
  15. {
  16. array_push($flow,$pinyin_table[$h][$l]);
  17. }
  18. else
  19. {
  20. array_push($flow,$h);
  21. array_push($flow,$l);
  22. }
  23. }
  24. else
  25. {
  26. array_push($flow,ord($string[ $i]));
  27. }
  28. }
  29. else
  30. {
  31. array_push($flow,ord($string[$i]));
  32. }
  33. }
  34. //print_r($flow);
  35. $pinyin = array();
  36. $pinyin[0] = '';
  37. for ($i=0;$i< ;sizeof($flow);$i )
  38. {
  39. if (is_array($flow[$i]))
  40. {
  41. if (sizeof($flow[$i]) == 1 )
  42. {
  43. foreach ($pinyin을 $key => $value)
  44. {
  45. $pinyin[$key] .= $flow[$i][0];
  46. }
  47. }
  48. if (sizeof($flow[$i]) > 1)
  49. {
  50. $tmp1 = $pinyin;
  51. foreach($pinyin을 $key => $value)
  52. {
  53. $pinyin[$key] .= $flow [$i][0];
  54. }
  55. for ($j=1;$j {
  56. $tmp2 = $tmp1 ;
  57. for ($k=0;$k {
  58. $tmp2[$k] .= $flow[$i][$j];
  59. }
  60. array_splice($pinyin,sizeof($pinyin),0,$tmp2);
  61. }
  62. }
  63. }
  64. else
  65. {
  66. foreach($pinyin $key => $value)
  67. {
  68. $pinyin[$key] .= chr($flow[$i]);
  69. }
  70. }
  71. }
  72. 반환 $pinyin;
  73. }

  74. function GetGB2312String($name)

  75. {
  76. $tostr = "";
  77. for($i=0;$i< ;strlen($name);$i )
  78. {
  79. $curbin = ord(substr($name,$i,1));
  80. if($curbin < 0x80)
  81. {
  82. $tostr .= substr($name,$i,1);
  83. }elseif($curbin < bindec("11000000")){
  84. $str = substr( $name,$i,1);
  85. $tostr .= "".ord($str).";";
  86. }elseif($curbin < bindec("11100000")){
  87. $str = substr($name,$i,2);
  88. $tostr .= "".GetUnicodeChar($str).";";
  89. $i = 1;
  90. } elseif($curbin $str = substr($name,$i,3);
  91. $gstr= iconv("UTF-8","GB2312",$ str);
  92. if(!$gstr)
  93. {
  94. $tostr .= "".GetUnicodeChar($str).";";
  95. }else{
  96. $tostr . = $gstr;
  97. }
  98. $i = 2;
  99. }elseif($curbin
  100. $str = substr($name,$i ,4);
  101. $tostr .= "".GetUnicodeChar($str).";";
  102. $i = 3;
  103. }elseif($curbin < 바인딩(" 11111100")){
  104. $str = substr($name,$i,5);
  105. $tostr .= "".GetUnicodeChar($str).";";
  106. $i = 4;
  107. }else{
  108. $str = substr($name,$i,6);
  109. $tostr .= "".GetUnicodeChar($str).";";
  110. $i = 5;
  111. }
  112. }
  113. return $tostr;
  114. }
  115. 함수 GetUnicodeChar($str)
  116. {
  117. $temp = "";
  118. for($i=0;$i
  119. {
  120. $x = decbin(ord(substr($str,$) i,1)));
  121. if($i == 0)
  122. {
  123. $s = strlen($str) 1;
  124. $temp .= substr($x,$s, 8-$s);
  125. }else{
  126. $temp .= substr($x,2,6);
  127. }
  128. }
  129. return binec($temp);
  130. }
  131. $db = mysql_connect("127.0.0.1:3307", "root","123");

  132. mysql_select_db("qq ",$db);

  133. $result = mysql_query("set names utf8",$db);
  134. $result = mysql_query("select title,group_id from groups",$db);

  135. while ($myrow = mysql_fetch_array($result)) {

  136. $text1="$myrow[0]";
  137. $text= GetGB2312String($text1);//GB2312 인코딩 가져오기 String
  138. $flow = get_pinyin_array($text);//병음 가져오기
  139. $result2 = mysql_query("update groups set titlepinyin='$flow[0]' where group_id = $myrow[1]",$db );
  140. printf("%s
    %s
    ",$text1,$flow[0]);
  141. }
  142. ?>

코드 복사

테이블에 병음 필드 제목 추가

  1. mysql>alter 테이블 그룹 제목 추가pinyin varchar(1000);
코드 복사

rpc.php가 다음으로 변경되었습니다.

  1. $db = mysql_connect("127.0.0.1:3307", "root"," 123");
  2. if(!$db) {
  3. // 연결할 수 없으면 오류를 표시합니다.
  4. echo 'ERROR: 데이터베이스에 연결할 수 없습니다.';
  5. } else {
  6. // 게시된 쿼리 문자열이 있습니까?
  7. if(isset($_POST['queryString'])) {
  8. $queryString = $_POST['queryString'];
  9. $length=strlen($ queryString);

  10. mysql_select_db("qq",$db);

  11. $result = mysql_query("set names utf8");

  12. < p> // 문자열 길이가 0보다 큽니까?
  13. if($length>0) { (프로그래머 홈에서 편집됨 bbs.it-home.org)
  14. $sql="";
  15. if( !ereg("^[A-Za-z0-9_.-] $",$queryString))//한자가 있는 경우
  16. {$sql="SELECT title FROM groups WHERE title LIKE '$queryString% ' LIMIT 10";
  17. }else{//영어 숫자 기호
  18. $sql="SELECT title FROM groups WHERE titlepinyin LIKE '$queryString%' LIMIT 10";
  19. }
  20. $query = mysql_query ( $sql);
  21. // 쿼리 실행: LIKE '$queryString%'
  22. if($query) {
  23. while ($myrow = mysql_fetch_array($query)) {
  24. / / 목록에
  25. 를 사용하여 결과 형식을 지정할 수 있습니다.
  26. // onClick 함수는 텍스트 상자를 결과로 채웁니다.
  27. echo '
  28. '.$myrow[0].'
  29. ';
  30. }
  31. } else {
  32. echo "오류: 문제가 발생했습니다 쿼리 $sql.";
  33. }
  34. } else {
  35. }
  36. } else {
  37. echo '이 스크립트에 직접 액세스하면 안 됩니다!';
  38. }
  39. }
  40. ?>

코드 복사


원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿