word_function.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
  1. <?php
  2. require_once '../public/casesuf.inc';
  3. require_once '../public/union.inc';
  4. require_once "../path.php";
  5. require_once "../public/_pdo.php";
  6. require_once "../public/load_lang.php";//语言文件
  7. require_once "../public/function.php";
  8. function get_new_book_list($strWordlist,$booklist=null){
  9. //查找这些词出现在哪些书中
  10. $arrBookType=json_decode(file_get_contents("../public/book_name/booktype.json"));
  11. $dictFileName=_FILE_DB_BOOK_WORD_;
  12. PDO_Connect("sqlite:$dictFileName");
  13. if(isset($booklist)){
  14. foreach($booklist as $oneBook){
  15. $aInputBook["{$oneBook}"]=1;
  16. }
  17. }
  18. $query = "select book,sum(count) as co from bookword where \"wordindex\" in $strWordlist group by book order by co DESC";
  19. $Fetch = PDO_FetchAll($query);
  20. $iFetch=count($Fetch);
  21. $newBookList=array();
  22. if($iFetch>0){
  23. $booktypesum["vinaya"]=array(0,0);
  24. $booktypesum["sutta"]=array(0,0);
  25. $booktypesum["abhidhamma"]=array(0,0);
  26. $booktypesum["anna"]=array(0,0);
  27. $booktypesum["mula"]=array(0,0);
  28. $booktypesum["atthakattha"]=array(0,0);
  29. $booktypesum["tika"]=array(0,0);
  30. $booktypesum["anna2"]=array(0,0);
  31. for($i=0;$i<$iFetch;$i++){
  32. $book=$Fetch[$i]["book"];
  33. $title=_get_book_info($book)->title;
  34. $sum=$Fetch[$i]["co"];
  35. array_push($newBookList,array("book"=>$book,"count"=>$sum,"title"=>$title));
  36. $t1=$arrBookType[$book-1]->c1;
  37. $t2=$arrBookType[$book-1]->c2;
  38. if(isset($booktypesum[$t1])){
  39. $booktypesum[$t1][0]++;
  40. $booktypesum[$t1][1]+=$sum;
  41. }
  42. else{
  43. $booktypesum[$t1][0]=1;
  44. $booktypesum[$t1][1]=$sum;
  45. }
  46. if(isset($booktypesum[$t2])){
  47. $booktypesum[$t2][0]++;
  48. $booktypesum[$t2][1]+=$sum;
  49. }
  50. else{
  51. $booktypesum[$t2][0]=1;
  52. $booktypesum[$t2][1]=$sum;
  53. }
  54. }
  55. }
  56. return($newBookList);
  57. //查找这些词出现在哪些书中结束
  58. }
  59. function get_book_tag($strWordlist,$booklist=null){
  60. //查找这些词出现在哪些书中
  61. $arrBookType=json_decode(file_get_contents("../public/book_name/booktype.json"));
  62. $dictFileName=_FILE_DB_BOOK_WORD_;
  63. PDO_Connect("sqlite:$dictFileName");
  64. if(isset($booklist)){
  65. foreach($booklist as $oneBook){
  66. $aInputBook["{$oneBook}"]=1;
  67. }
  68. }
  69. $query = "select book,sum(count) as co from bookword where \"wordindex\" in $strWordlist group by book order by co DESC";
  70. $Fetch = PDO_FetchAll($query);
  71. $iFetch=count($Fetch);
  72. $newBookList=array();
  73. if($iFetch>0){
  74. $booktypesum["vinaya"]=array(0,0);
  75. $booktypesum["sutta"]=array(0,0);
  76. $booktypesum["abhidhamma"]=array(0,0);
  77. $booktypesum["anna"]=array(0,0);
  78. $booktypesum["mula"]=array(0,0);
  79. $booktypesum["atthakattha"]=array(0,0);
  80. $booktypesum["tika"]=array(0,0);
  81. $booktypesum["anna2"]=array(0,0);
  82. for($i=0;$i<$iFetch;$i++){
  83. $book=$Fetch[$i]["book"];
  84. $sum=$Fetch[$i]["co"];
  85. array_push($newBookList,array($book,$sum));
  86. $t1=$arrBookType[$book-1]->c1;
  87. $t2=$arrBookType[$book-1]->c2;
  88. if(isset($booktypesum[$t1])){
  89. $booktypesum[$t1][0]++;
  90. $booktypesum[$t1][1]+=$sum;
  91. }
  92. else{
  93. $booktypesum[$t1][0]=1;
  94. $booktypesum[$t1][1]=$sum;
  95. }
  96. if(isset($booktypesum[$t2])){
  97. $booktypesum[$t2][0]++;
  98. $booktypesum[$t2][1]+=$sum;
  99. }
  100. else{
  101. $booktypesum[$t2][0]=1;
  102. $booktypesum[$t2][1]=$sum;
  103. }
  104. }
  105. $output = array();
  106. $output[] = array("tag"=>"vinaya","title"=>"律藏","count"=>$booktypesum["vinaya"][0]);
  107. $output[] = array("tag"=>"sutta","title"=>"经藏","count"=>$booktypesum["sutta"][0]);
  108. $output[] = array("tag"=>"abhidhamma","title"=>"阿毗达摩藏","count"=>$booktypesum["abhidhamma"][0]);
  109. $output[] = array("tag"=>"anna","title"=>"其他","count"=>$booktypesum["anna"][0]);
  110. $output[] = array("tag"=>"mula","title"=>"根本","count"=>$booktypesum["mula"][0]);
  111. $output[] = array("tag"=>"atthakattha","title"=>"义注","count"=>$booktypesum["atthakattha"][0]);
  112. $output[] = array("tag"=>"tika","title"=>"复注","count"=>$booktypesum["tika"][0]);
  113. $output[] = array("tag"=>"anna2","title"=>"其他","count"=>$booktypesum["anna2"][0]);
  114. return $output;
  115. }
  116. }
  117. function render_book_list($strWordlist,$booklist=null){
  118. //查找这些词出现在哪些书中
  119. $arrBookType=json_decode(file_get_contents("../public/book_name/booktype.json"));
  120. $dictFileName=_FILE_DB_BOOK_WORD_;
  121. PDO_Connect("sqlite:$dictFileName");
  122. if(isset($booklist)){
  123. foreach($booklist as $oneBook){
  124. $aInputBook["{$oneBook}"]=1;
  125. }
  126. }
  127. $query = "select book,sum(count) as co from bookword where \"wordindex\" in $strWordlist group by book order by co DESC";
  128. $Fetch = PDO_FetchAll($query);
  129. $iFetch=count($Fetch);
  130. $newBookList=array();
  131. if($iFetch>0){
  132. $booktypesum["vinaya"]=array(0,0);
  133. $booktypesum["sutta"]=array(0,0);
  134. $booktypesum["abhidhamma"]=array(0,0);
  135. $booktypesum["anna"]=array(0,0);
  136. $booktypesum["mula"]=array(0,0);
  137. $booktypesum["atthakattha"]=array(0,0);
  138. $booktypesum["tika"]=array(0,0);
  139. $booktypesum["anna2"]=array(0,0);
  140. for($i=0;$i<$iFetch;$i++){
  141. $book=$Fetch[$i]["book"];
  142. $sum=$Fetch[$i]["co"];
  143. array_push($newBookList,array($book,$sum));
  144. $t1=$arrBookType[$book-1]->c1;
  145. $t2=$arrBookType[$book-1]->c2;
  146. if(isset($booktypesum[$t1])){
  147. $booktypesum[$t1][0]++;
  148. $booktypesum[$t1][1]+=$sum;
  149. }
  150. else{
  151. $booktypesum[$t1][0]=1;
  152. $booktypesum[$t1][1]=$sum;
  153. }
  154. if(isset($booktypesum[$t2])){
  155. $booktypesum[$t2][0]++;
  156. $booktypesum[$t2][1]+=$sum;
  157. }
  158. else{
  159. $booktypesum[$t2][0]=1;
  160. $booktypesum[$t2][1]=$sum;
  161. }
  162. }
  163. echo "<div id='bold_book_list_new' style='margin:1em;0'>";
  164. echo "<div>出现在{$iFetch}本书中:</div>";
  165. echo "<div>全选<input id='bold_all_book' type='checkbox' checked onclick=\"dict_bold_book_all_select()\" /></div>";
  166. echo "<div>律藏-{$booktypesum["vinaya"][0]}-{$booktypesum["vinaya"][1]}<input id='id_book_filter_vinaya' type='checkbox' checked onclick=\"search_book_filter('id_book_filter_vinaya','vinaya')\" /></div>";
  167. echo "<div>经藏-{$booktypesum["sutta"][0]}-{$booktypesum["sutta"][1]}<input id='id_book_filter_sutta' type='checkbox' checked onclick=\"search_book_filter('id_book_filter_sutta','sutta')\" /></div>";
  168. echo "<div>阿毗达摩藏-{$booktypesum["abhidhamma"][0]}-{$booktypesum["abhidhamma"][1]}<input id='id_book_filter_abhidhamma' type='checkbox' checked onclick=\"search_book_filter('id_book_filter_abhidhamma','abhidhamma')\" /></div>";
  169. echo "<div >其他-{$booktypesum["anna"][0]}-{$booktypesum["anna"][1]}<input id='id_book_filter_anna' type='checkbox' checked onclick=\"search_book_filter('id_book_filter_anna','anna')\" /></div>";
  170. echo "<div style='margin-bottom:1em';></div>";
  171. echo "<div>根本-{$booktypesum["mula"][0]}-{$booktypesum["mula"][1]}<input id='id_book_filter_mula' type='checkbox' checked onclick=\"search_book_filter('id_book_filter_mula','mula')\" /></div>";
  172. echo "<div>义注-{$booktypesum["atthakattha"][0]}-{$booktypesum["atthakattha"][1]}<input id='id_book_filter_atthakattha' type='checkbox' checked onclick=\"search_book_filter('id_book_filter_atthakattha','atthakattha')\" /></div>";
  173. echo "<div>复注-{$booktypesum["tika"][0]}-{$booktypesum["tika"][1]}<input id='id_book_filter_tika' type='checkbox' checked onclick=\"search_book_filter('id_book_filter_tika','tika')\" /></div>";
  174. echo "<div>其他-{$booktypesum["anna2"][0]}-{$booktypesum["anna2"][1]}<input id='id_book_filter_anna2' type='checkbox' checked onclick=\"search_book_filter('id_book_filter_anna2','anna2')\" /></div>";
  175. for($i=0;$i<$iFetch;$i++){
  176. $book=$Fetch[$i]["book"];
  177. $bookname=_get_book_info($book)->title;
  178. if(isset($booklist)){
  179. if(isset($aInputBook["{$book}"])){
  180. $bookcheck="checked";
  181. }
  182. else{
  183. $bookcheck="";
  184. }
  185. }
  186. else{
  187. $bookcheck="checked";
  188. }
  189. $t1=$arrBookType[$book-1]->c1;
  190. $t2=$arrBookType[$book-1]->c2;
  191. echo "<div class='{$t1}'>";
  192. echo "<div class='{$t2}'>";
  193. echo "<input id='bold_book_{$i}' type='checkbox' $bookcheck value='{$book}'/>";
  194. echo "<a onclick=\"dict_bold_book_select({$i})\">";
  195. echo "《{$bookname}》({$Fetch[$i]["co"]})<br />";
  196. echo "</a>";
  197. echo "</div></div>";
  198. }
  199. echo "<input id='bold_book_count' type='hidden' value='{$iFetch}' />";
  200. echo "</div>";
  201. }
  202. return($newBookList);
  203. //查找这些词出现在哪些书中结束
  204. }
  205. function countWordInPali($word,$sort=false,$limit = 0){
  206. //加语尾
  207. $case = $GLOBALS['case'];
  208. $union = $GLOBALS['union'];
  209. $arrNewWord=array();
  210. for ($row = 0; $row < count($case); $row++) {
  211. $len=mb_strlen($case[$row][0],"UTF-8");
  212. $end=mb_substr($word, 0-$len,NULL,"UTF-8");
  213. if($end==$case[$row][0]){
  214. $newWord=mb_substr($word, 0,mb_strlen($word,"UTF-8")-$len,"UTF-8").$case[$row][1];
  215. $arrNewWord[$newWord]=1;
  216. }
  217. }
  218. //加连读词尾
  219. $arrUnWord=array();
  220. for($i=0; $i<2; $i++){
  221. for ($row = 0; $row < count($union); $row++) {
  222. $len=mb_strlen($union[$row][0],"UTF-8");
  223. foreach($arrNewWord as $x=>$x_value){
  224. $end=mb_substr($x, 0-$len,NULL,"UTF-8");
  225. if($end==$union[$row][0]){
  226. $newWord=mb_substr($x, 0,mb_strlen($x,"UTF-8")-$len,"UTF-8").$union[$row][1];
  227. $arrUnWord[$newWord]=1;
  228. }
  229. }
  230. }
  231. }
  232. //将连读词和$arrNewWord混合
  233. foreach($arrUnWord as $x=>$x_value){
  234. $arrNewWord[$x]=1;
  235. }
  236. if(count($arrNewWord)>0){
  237. $strQueryWord="(";
  238. foreach($arrNewWord as $x=>$x_value) {
  239. $strQueryWord.="'{$x}',";
  240. }
  241. $strQueryWord=mb_substr($strQueryWord, 0,mb_strlen($strQueryWord,"UTF-8")-1,"UTF-8");
  242. $strQueryWord.=")";
  243. }
  244. else{
  245. $strQueryWord="('{$word}')";
  246. }
  247. //查找实际出现的拼写
  248. $dsn = "sqlite:"._FILE_DB_WORD_INDEX_;
  249. $user = "";
  250. $password = "";
  251. $PDO = new PDO($dsn, $user, $password,array(PDO::ATTR_PERSISTENT=>true));
  252. $PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
  253. if($limit==0){
  254. $sSqlLimit = "";
  255. }
  256. else{
  257. $sSqlLimit = "limit 0 , ".$limit;
  258. }
  259. if($sort){
  260. $sSqlSort = "order by count DESC";
  261. }
  262. else{
  263. $sSqlSort = "";
  264. }
  265. $query = "select id,word,count,bold,len from wordindex where \"word\" in $strQueryWord ".$sSqlSort . " ".$sSqlLimit;
  266. $stmt = $PDO->query($query);
  267. $arrRealWordList = $stmt->fetchAll(PDO::FETCH_ASSOC);
  268. return($arrRealWordList);
  269. }
  270. ?>