| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- <?php
- include "./_pdo.php";
- $mode= $_GET["mode"];
- switch($mode){
- case "xml":
- $xmlFileName = $_GET["filename"];
- break;
- case "word":
- $word=$_GET["word"];
- break;
- case "words":
- break;
- }
- $dictFileName = $_GET["dict"];
- if($mode==""){
- $mode="xml";
- }
- $countInsert=0;
- $wordlist=array();
- switch($mode){
- case "xml":
- $xml = simplexml_load_file($xmlFileName);
- //get word list from xml documnt
- $wordsSutta = $xml->xpath('//word');
- /*prepare words from xmldoc and remove same words*/
- foreach($wordsSutta as $ws){
- $pali = $ws->pali;
- $arrlength=count($wordlist);
- $found=false;
- for($x=0;$x<$arrlength;$x++) {
- if(strcmp($pali,$wordlist[$x])==0){
- $found=true;
- break;
- }
- }
- if(!$found){
- $srcWord = str_replace("-","",lcfirst($pali));
- $srcWord = str_replace("’","",lcfirst($pali));
- $srcWord = str_replace(".","",lcfirst($pali));
- $srcWord = str_replace("ŋ","ṃ",lcfirst($pali));
- $wordlist[$countInsert]=str_replace("-","",lcfirst($pali));/*首字符转为小写 first letter convert to lowercase */
- $countInsert++;
- }
- }
- $arrlength=count($wordlist);/*size of word list*/
- break;
- case "word":
- $wordlist[0]=$word;
- $arrlength=1;
- break;
- case "words":
- break;
- default:
- }
- /*
- prepare case ending table
- in the csv file,one record have one kinds of case
- so we combine the same form of case ending
- */
- $caseRowCounter=0;
- $casetable = array();
- if(($handle=fopen('caseend.csv','r'))!==FALSE){
- while(($data=fgetcsv($handle,0,','))!==FALSE){
- $find=false;
- for($i=0;$i<count($casetable);$i++){
- if($casetable[$i][0]==$data[0] && $casetable[$i][1]==$data[1]){
- $casetable[$i][2]=$casetable[$i][2]."$".$data[2];
- $find=true;
- break;
- }
- }
- if($find==false){
- $casetable[$caseRowCounter]=$data;
- $caseRowCounter++;
- }
- }
- }
- $outXml = "<wordlist>";
- $db_path="dict/";
- $db_file = $db_path.$dictFileName;
- //open database
- PDO_Connect("sqlite:$db_file");
- for($x=0;$x<$arrlength;$x++){
- if(mb_strlen($wordlist[$x])>1){
- //先直接查,查不到再用语尾表查
- $query = "select * from tptdict where \"word\"='".$wordlist[$x]."' ORDER BY rowid DESC ";
- $Fetch = PDO_FetchAll($query);
- $iFetch=count($Fetch);
- if($iFetch>0){
- for($i=0;$i<$iFetch;$i++){
- if(strcmp($Fetch[$i]["org"],'?')==0 && strcmp($Fetch[$i]["mean"],'?')==0 && strcmp($Fetch[$i]["gramma"],'?')==0 ){
- continue;
- }
- $outXml = $outXml."<word>";
- $outXml = $outXml."<pali>".$wordlist[$x]."</pali>";
- $outXml = $outXml."<org>".$Fetch[$i]["org"]."</org>";
- $outXml = $outXml."<mean>".$Fetch[$i]["mean"]."</mean>";
- $outXml = $outXml."<case>".$Fetch[$i]["gramma"]."</case>";
- $outXml = $outXml."</word>";
- }
- }/*直接查询结束*/
- else{/*没查到,用语尾表查*/
- for($iCase=0;$iCase<count($casetable);$iCase++){
- if(substr($wordlist[$x],0-strlen($casetable[$iCase][0]))==$casetable[$iCase][0]){
- $pali=substr($wordlist[$x],0,strlen($wordlist[$x])-strlen($casetable[$iCase][0]));
- $pali=$pali.$casetable[$iCase][1];
-
- $query = "select * from tptdict where \"word\"='".$pali."' ORDER BY rowid DESC ";
- $Fetch = PDO_FetchAll($query);
- $iFetch=count($Fetch);
- if($iFetch>0){
- for($i=0;$i<$iFetch;$i++){
- if(strcmp($Fetch[$i]["org"],'?')==0 && strcmp($Fetch[$i]["mean"],'?')==0 && strcmp($Fetch[$i]["gramma"],'?')==0 ){
- continue;
- }
- $outXml = $outXml."<word>";
- $outXml = $outXml."<pali>".$wordlist[$x]."</pali>";
- $outXml = $outXml."<org>".$Fetch[$i]["word"]."@".$casetable[$iCase][0]."$".$Fetch[$i]["org"]."</org>";
- $outXml = $outXml."<mean>".$Fetch[$i]["mean"]."</mean>";
- $outXml = $outXml."<case>".$Fetch[$i]["gramma"]."$".$casetable[$iCase][2]."</case>";
- $outXml = $outXml."</word>";
- }
- }
- }
- }
- }
- /*全部查询结束*/
- }
- }
- $outXml = $outXml."</wordlist>";
- echo $outXml;
- ?>
|