PageRenderTime 46ms CodeModel.GetById 22ms RepoModel.GetById 1ms app.codeStats 0ms

/update/Common/table/goods.table.php

https://github.com/alin40404/FanweShare
PHP | 114 lines | 84 code | 14 blank | 16 comment | 11 complexity | cb95538233bd6987d1ede007d5f7401f MD5 | raw file
Possible License(s): Apache-2.0
  1. <?php
  2. $table = C('DB_PREFIX').'goods';
  3. $table_match = C('DB_PREFIX').'goods_match';
  4. $begin = isset($_REQUEST['begin']) ? intval($_REQUEST['begin']) : 0;
  5. $begin = max($begin,0);
  6. $data_num = $db->query('SELECT COUNT(id) AS num FROM '.$table);
  7. if(count($data_num) > 0)
  8. $data_num = $data_num[0]['num'];
  9. else
  10. $data_num = 0;
  11. if($data_num > $begin)
  12. {
  13. $limit = $data_num - $begin;
  14. if($limit > 1000)
  15. $limit = 1000;
  16. $data_list = $db->query("SELECT id,site_name,name FROM $table LIMIT ".$begin.','.$limit);
  17. showjsmessage("开始更新数据表 goods $begin 到 ".($begin + $limit)." 行");
  18. $data_count = count($data_list);
  19. for($j=0; $j< $data_count; $j++)
  20. {
  21. $data = $data_list[$j];
  22. $db->query('INSERT INTO '.$table_match.' (id,content) VALUES('.$data['id'].',\''.segmentToUnicode(clearSymbol($data['site_name'].$data['name'])).'\')');
  23. }
  24. showjsmessage("更新数据表 goods $begin 到 ".($begin + $limit)." 行 成功");
  25. if($limit < 1000)
  26. {
  27. showjsmessage(U('Index/updatetable',array('table'=>'area','begin'=>0)),5);
  28. exit;
  29. }
  30. else
  31. {
  32. showjsmessage(U('Index/updatetable',array('table'=>'goods','begin'=>$begin + $limit)),5);
  33. exit;
  34. }
  35. }
  36. /**
  37. * utf8字符转Unicode字符
  38. * @param string $char 要转换的单字符
  39. * @return void
  40. */
  41. function utf8ToUnicode($char)
  42. {
  43. switch(strlen($char))
  44. {
  45. case 1:
  46. return ord($char);
  47. case 2:
  48. $n = (ord($char[0]) & 0x3f) << 6;
  49. $n += ord($char[1]) & 0x3f;
  50. return $n;
  51. case 3:
  52. $n = (ord($char[0]) & 0x1f) << 12;
  53. $n += (ord($char[1]) & 0x3f) << 6;
  54. $n += ord($char[2]) & 0x3f;
  55. return $n;
  56. case 4:
  57. $n = (ord($char[0]) & 0x0f) << 18;
  58. $n += (ord($char[1]) & 0x3f) << 12;
  59. $n += (ord($char[2]) & 0x3f) << 6;
  60. $n += ord($char[3]) & 0x3f;
  61. return $n;
  62. }
  63. }
  64. /**
  65. * utf8字符串分隔为unicode字符串
  66. * @param string $str 要转换的字符串
  67. * @param string $pre
  68. * @return string
  69. */
  70. function segmentToUnicode($str,$pre = '')
  71. {
  72. $arr = array();
  73. $str_len = mb_strlen($str,'UTF-8');
  74. for($i = 0;$i < $str_len;$i++)
  75. {
  76. $s = mb_substr($str,$i,1,'UTF-8');
  77. if($s != ' ' && $s != ' ')
  78. {
  79. $arr[] = $pre.'ux'.utf8ToUnicode($s);
  80. }
  81. }
  82. $arr = array_unique($arr);
  83. return implode(' ',$arr);
  84. }
  85. /**
  86. * 清除符号
  87. * @param string $str 要清除符号的字符串
  88. * @return string
  89. */
  90. function clearSymbol($str)
  91. {
  92. static $symbols = NULL;
  93. if($symbols === NULL)
  94. {
  95. $symbols = file_get_contents(ROOT_PATH.'./public/table/symbol.table');
  96. $symbols = explode("\r\n",$symbols);
  97. }
  98. return str_replace($symbols,"",$str);
  99. }
  100. ?>