人大影印資料處理程式_輸入篇

NO IMAGE

<?
//本程式是為解析人大影印資料的文章到資料庫專用。
//編者:孔秀祥。日期: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);
[email protected]_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);
//             [email protected]_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;
  }
?>