<? //本程序是為解析人大復印資料的文章到數據庫專用。 //編者:孔秀祥。日期:2001/4/10 switch($position) { default: session_start(); if (!isset($auth_passed)) { echo "本功能只有授權用戶才能使用。"; return -1; }
if(isset($u_name)) { session_name($u_name);
//echo "<center><font color='red'>".session_name().":本程序將竭誠為您服務。</font></center>\n"; //echo "<hr>"; }
?> <HTML><HEAD> <TITLE>文章加入數據庫 </TITLE> </HEAD> <BODY><TABLE><CENTER> <FORM ENCTYPE= "multipart/form-data" NAME = "SubmitForm" ACTION= "<? $PHP_SELF ?>" METHOD = "POST"> <INPUT TYPE= "hidden" NAME = "MAX_FILE_SIZE" VALUE ="20000000"> <!--INPUT TYPE= "hidden" NAME = "UploadAction" VALUE = "1"--> <INPUT TYPE= "hidden" NAME = "position" VALUE = "process"> <TR><TD>文件名<TD><INPUT NAME = "UploadFile" TYPE = "file" VALUE="" SIZE = "30"></TR> <TR><TD>索引文件名<TD><INPUT NAME = "index_file" TYPE = "text" VALUE="" SIZE = "30"></TD></TR> <TR><TD>索引標題<TD><INPUT NAME = "index_title" TYPE = "text" VALUE="學而齋資料" SIZE = "30"></TD></TR>
<TR><TD rowspan=5>查詢說明</TD> <!--/TR><TR--> <TD rowspan=5><TEXTAREA wrap=on rows="5" cols="30" NAME = "index_describe" SIZE = "250"> 人大復印資料(1985-1989)根據任意詞查詢,任意詞= </TEXTAREA></TD> </TR>
<TD>文章分類</TD> </TR> <TR><TD> <SELECT size="1" name="catalog" TYPE = "int" default=11> ?<OPTION selected value="11">語言理論</OPTION> ?<OPTION value="12">語法學</OPTION> ?<OPTION value="13">語義學</OPTION> ?<OPTION value="14">語用學</OPTION> ?<OPTION value="15">修辭學 </OPTION> ?<OPTION value="16">古代漢語</OPTION> ?<OPTION value="21">歷史學</OPTION> ?<OPTION value="31">中國哲學</OPTION> ?<OPTION value="41">其他</OPTION> </SELECT> </TR>
<TR><TD align=center> <INPUT NAME = "submit" VALUE = "提交" TYPE = "submit"> <TD><INPUT NAME = "reset" VALUE = "重置" TYPE = "reset"> </TD></TR> </FORM></CENTER></TABLE></BODY>
</HTML> <?
break; case "process": session_start(); require "config.php3";
$UploadAction=0; $index_path="\\index\\"; $added=0; //索引文件是否已經存在的標記。 $die=0; //碰到異常情況退出循環標記。 $data_exist=0; //要加入的文章已經存在的計量 $data_insert=0; //新加入文章的計量 $repeat=0; //是不是重復了。 $TimeLimit=0; //設置超時限制時間缺省時間為 30秒設置為0時為不限時 set_time_limit($TimeLimit);
//$UploadPath = AddSlashes(dirname($PATH_TRANSLATED)); $FileName = $UploadPath.$UploadFile_name; //上載文件名 //If(($UploadFile != "none")&&($UploadFile != "")) If(($UploadFile =="none")||($UploadFile == "")){ $page=$PHP_SELF; xueroom_error_exit("文件名不能為空,或者文件沒有上傳成功。",$page); } //$file_data=file($UploadFile); $link=@MYSQL_CONNECT($hostname,$dbusername,$dbpassword) OR DIE("不能連接數據庫!"); @mysql_select_db("$dbname") or die("不能選擇數據庫!");
$patterne="/【\s*文獻號\s*】(.+)\n/U"; //文獻號 $patternf="/【原文出處】(.+)\n/U"; //原文出處 $patterng="/【原刊期號】(.+)\n/U"; //原刊期號 $patternh="/【分\s*類\s*號】(.+)\n/U"; //分 類 號 $patternb="/【復印期號】(.+)\n/U"; //復印期號
//$patternc="/.*\s*【 標 題 】(.+)\n【.*/Us"; //標 題 本來不加\n,但碰到“小句(d0a1bee4)”其中的a1be正好是“【”的內碼。2001/3/13
//$patternc="/【 標 題 】(.+)\n【.*/Us"; //標 題 本來不加\n,但碰到“小句(d0a1bee4)”其中的a1be正好是“【”的內碼。2001/3/13 $patternc="/【\s*標\s*題\s*】(.+)\n【.*/Us"; //標 題 本來不加\n,但碰到“小句(d0a1bee4)”其中的a1be正好是“【”的內碼。2001/3/13 $patternd="/【\s*作\s*者\s*】(.+)\n/U"; //作 者 $patterna="/(.+【\s*正\s*文\s*】)(.+)$/Us"; //留下一個【,作為標題欄的結束標記。 $pattern11="/【作者簡介】(.+)【.*/Us";// $pattern12="/【內容提要】(.+)【.*/Us";//
$fp_o=fopen("$UploadFile",'r'); $data=fread($fp_o,filesize($UploadFile)); //文件讀入字符變量 fclose($fp_o); $poem_array=preg_split("/\n\s+\n\s+\n\s+/",$data); $replacement[0]="/(注.*)$/s"; //應該寫上“注”,否則把“(上/下)”也刪了。 $replacement[1]="/(注.*)\n\s*/s"; //為馬慶株的一篇文章而設。注后還有副題。 //echo$poem_array[1]; $s=sizeof($poem_array); for($i=0;$i<$s;$i++){ //對一個網頁內的所有唐詩進行操作。 //for($i=0;$i<2;$i++){ //對一個網頁內的所有唐詩進行操作。 $t_data=$poem_array[$i]; // if(preg_match($pattern,$data,$matches,PREG_SET_ORDER)){ if(preg_match($patterna,$t_data,$matchesa,PREG_SET_ORDER)){ $artical_data=$matchesa[2]; //正文 $data=$matchesa[1]; //文章頭 if(preg_match($patternb,$data,$matchesb,PREG_SET_ORDER)) $date_rep=$matchesb[1]; //復印期號 else $date_rep=""; if(preg_match($patternc,$data,$matchesc,PREG_SET_ORDER)){ $artical_title=trim($matchesc[1]); //標題 $artical_title=preg_replace($replacement,"",$artical_title); // echo $artical_title."<BR>"; } else $artical_title=""; if(preg_match($patternd,$data,$matchesd,PREG_SET_ORDER)) $artical_author=trim($matchesd[1]); //作者 else $artical_author="";
if(preg_match($patterne,$data,$matchese,PREG_SET_ORDER)){ $resource_id=trim($matchese[1]); //人大編號 // echo $resource_id."<BR>"; } else $resource_id=""; if(preg_match($patternf,$data,$matchesf,PREG_SET_ORDER)) $origin_periodical=trim($matchesf[1]); //期刊 else $origin_periodical=""; if(preg_match($patterng,$data,$matchesg,PREG_SET_ORDER)) $date_temp=$matchesg[1]; //出版日期 else $date_temp=""; if(preg_match($patternh,$data,$matchesh,PREG_SET_ORDER)) $artical_type=trim($matchesh[1]); //文章分類 else $artical_type=""; /* if(preg_match($pattern11,$data,$matchesd,PREG_SET_ORDER)) $author_brif=$matchesd[1]; //作者簡介 else $author_brif=""; */ if(preg_match($pattern12,$data,$matches12,PREG_SET_ORDER)) $content_brif=$matches12[1]; //內容提要 else $content_brif=""; // echo$data; //echo $artical_title; /* echo $resource_id."<BR>"; echo $origin_periodical."<BR>"; echo $artical_title."<BR>"; echo $artical_author."<BR>"; */ // echo $date_rep."<BR>"; if(($artical_title=="")||($resource_id=="")){ $a=$i+1; echo "標題或人大編號為空,不合法。第 $a 篇沒有加入數據庫<BR>"; $die=1; //break; } else{ if(strlen(trim(substr($date_temp,6,2)))!=0){ $date_pub=substr($date_temp,0,4)."-".substr($date_temp,4,2).substr($date_temp,6,2)." 00:00:00"; } else{ $date_pub=substr($date_temp,0,4)."-".substr($date_temp,4,2)."-01 01:01:01"; //在日期的數字一定要有效,否則被置零。 // $date_pub=substr($date_temp,0,4)."-".substr($date_temp,4,2); } //如果原文發表在報紙上,則有日期
// $artical_title=preg_replace($pattern91,"",$artical_title); $origin_periodical=addslashes($origin_periodical); $artical_title=addslashes($artical_title); $date_reprinted=substr($date_rep,0,4)."-".substr($date_rep,4,2)."-01 01:01:01"; if($content_brif) $artical_data="$content_brif \r\n $artical_data"; $artical_data=addslashes($artical_data); $artical__size=strlen($artical_data); $resource_id=trim($resource_id); $query = "INSERT INTO artical (resource_id, origin_periodical,date_pub, artical_author, artical_title, artical_data, artical_type,artical__size, date_reprinted,catalog) VALUES ('$resource_id', '$origin_periodical','$date_pub', '$artical_author', '$artical_title', '$artical_data', '$artical_type','$artical__size', '$date_reprinted',$catalog)"; $q="select artical_id,resource_id,artical_title,artical_author,artical_type from artical where resource_id=\"$resource_id\""; $r = @mysql_query($q); // $count=@mysql_fetch_row($r); // echo "$artical_type,,".$count[4]."<BR>"; while($count=mysql_fetch_array($r)){ //重復的號碼可能有多個,真正重復的不一定是第一個找到的。所以要用循環來找。2001/3/16 //為了找到個理由,我花的代價可是不小。 if($artical_type==$count[4]&&$artical_author==$count[3]){ $data_exist+=1; $id=$count[0]; $title=$count[2]; $author=$count[3]; $repeat=1; break; } } if($repeat){ $f_data.="<TR><TD><a href=".$dataurl."readfile.php3?artical_id=$id>$title</a><TD>作者:$author </TR>\r\n"; $repeat=0; } else{ $result = @mysql_query($query); if($result){ $data_insert+=1; $id= mysql_insert_id(); $f_data.="<TR><TD><a href=".$dataurl."readfile.php3?artical_id=$id>$artical_title</a><TD>作者:$artical_author</TR>\r\n"; } else{ echo $data; echo'數據寫入失敗<br>'; }//if($result) }//if(strlen($count)!=0){ //文章是否已經存在。
}//if(strlen($artical_title)==0){
}//if(preg_match($patterna,$t_data,$matchesa,PREG_SET_ORDER)){ }//for()
//下面為結束處理。 set_time_limit(30); mysql_close($link); $dte_created=date('Y-m-d H:i:s'); $total=$data_exist+$data_insert;
if($index_title==""){ $index_title="學而齋資料"; } $index_title=$index_title."_".$data_search;
$html_header="<html><head><title>$index_title</title></head><body>"; $html_header.="<h5>$index_title</h5>\r\n"; $dte_created=date('Y-m-d H:i:s'); $html_header.="<font color='Maroon' face='楷體' size=1>$index_describe 發現了 $total 條/上載日期:$dte_created</font><hr>\r\n"; $html_header.="<table>\r\n"; $data=$html_header.$f_data; $data.="<TABLE></body></html>"; /* If(strlen($index_file)==0){ header("Content-type: text/html"); echo $data; } else { */ If(strlen($index_file)!=0){ $in_file="$index_file"; $index_file=$index_path.$in_file; } else $in_file="temp.html";
$fp=indexfile($index_file,$index_title,$index_describe); fputs($fp, "發現了 $total 條"); fputs($fp, "查詢日期:$dte_created</font><hr>\r\n"); fputs($fp,"<table>\r\n"); fputs($fp, $f_data); fputs($fp, "<TABLE></body></html>"); fclose($fp); echo "<HTML><HEAD><TITLE>文件提取</TITLE></HEAD><BODY>";
if($added){ //如果索引文件存在。$added是一個全局變量。 echo "索引文件".$in_file."已經存在,新索引已經加入到文件的最后。<BR>"; // echo "請看<a href=$index_url$in_file>".$in_file.'</a>的最后'.$total.'條。<BR>'; }
else{ //將新索引文件寫入總索引文件。 $total_index=$index_path."k_index.html"; $fp_i=fopen($total_index,'a+'); $file_link="<a href=$index_url$in_file>$index_describe</a><BR>\r\n"; fputs($fp_i, $file_link); fclose($fp_i); }//if($added) echo"點<a href=$index_url$in_file>這里</a>看新加入的文件索引<BR>";
//}//If(strlen($index_file)==0){ if($data_exist>0) echo "重復的文章共".$data_exist."篇。<BR>"; if($data_insert>0) echo "新加入的文章共".$data_insert."篇。<HR>"; $total=$data_exist+$data_insert; echo"上傳文件".$UploadFile_name."共有文章".$total."篇。"; echo"<BR><A HREF = $PHP_SELF>返回 </A>"; echo"</BODY></HTML>"; break; } ?>
|