Mã nguồn chương trình Máy tìm kiếm Chữ viết tắt trên Internet
PHỤ LỤC
PHỤ LỤC 1- MÃ NGUỒN CHƯƠNG TRÌNH MÁY TÌM KIẾM CVT TRÊN INTERNET
Chương trình: thuthapv5.php
<html>
<head>
<meta http-equiv="Content-Language" content="vi">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Cập nhập chữ viết tắt mới tự động từ URL.</title>
<style type="text/css">
<!--
body,td,th {
color: #0000FF;
}
.style1 {color: #FF0000}
.style4 {color: #0000FF}
.style6 {color: #0000FF; font-weight: bold; }
.style14 {color: #CC0033}
.style24 {
color: #FFFF00;
font-size: 18px;
}
.style25 {color: #CC0033; font-weight: bold; }
.style27 {
font-size: 18px;
font-weight: bold;
}
-->
</style>
<?PHP
error_reporting(0);
/* ===============================================================
* thuthapv5.php
* Scrip tìm kiếm chữ viết tắt mới từ URL lưu vào CSDL MySQL
==================================================================
*/
//------ Ham kiem tra loai bo nhung chuoi khong la chu viet tat:
function testdauhieucvt($string)
{
$loaibo="á|à|ả|ã|ạ|ă|ắ|ằ|ẳ|ẵ|ặ|â|ấ|ầ|ẩ|ẫ|ậ|é|è|ẻ|ẽ|ẹ|ê|ế|ể|ễ|ệ|í|ì|ỉ|ĩ|ị|ó|ò|ỏ|õ|ọ|ô|ố|ồ|ổ|ỗ|ộ|ú|ù|ủ|ũ|ụ|ư|ứ|ừ|ử|ữ|ựa|b|c|d|g|h|i|k|l|n|o";
$loaibo= $loaibo ."|q|r|s|t|\+|,|\'|\"|\)|\:|\?|[s]|\//|[$]" ;
if (ereg ($loaibo, $string)) //Nếu (...) có chứa các ký tự trong $loaibo
{return false;}
else
{return true;}
}
//------ Ham trich nghia tu viet tat:
function nghiacau($cauxet,$cvt)
{
$nghia="";
$dai= strlen($cvt);
// print $dai ."<br>";
$tach=explode("(".$cvt.")",$cauxet);
$nghiatam=trim($tach[0]);
$cdai=strlen($nghiatam);
// print $cdai ."<br>";
$dem=0;
$ii = $cdai;
while ($ii >= 0):
{
$tt= substr($nghiatam,$ii,1);
if ($tt==" ")
{ $dem=$dem+1;
if ($dem==$dai) {$luuvt= $ii;}
}
$ii--;
}
endwhile;
$nghia= substr($nghiatam,$luuvt);
return $nghia;
}
//==================== Chương trình chính:======================
//----------------- Kết nối Database:
$xx= date("H:i:s");
mysql_connect("localhost","cvt","cvt")
or die("Lỗi (ERROR): Không thể kết nối vào Database!");
mysql_select_db("dulieucvt");
// Xac dinh URL de xu ly:
$url = $_GET['url'];
// print "Web Site đọc vào URL= $url";
if( !$url )
{
die( "Bạn cần nhập địa chỉ URL để xử lý tìm kiếm chữ viết tắt mới!" );
}
else if( substr($url,0,7) != "http://" )
{ $url = "http://$url"; }
//------------ Tìm tất cả các liên kêt trên URL ---------------
$dslienket = array(); // Biến mãng lưu danh sách liên kết
$file = dirname ($url); // Lấy đường dẫn đến thư mục
$headers = get_meta_tags($url); // Doc the meta tags cua trang Web
$HTML = file_get_contents($url); // Doc noi dung File HTML
// Chon lay nhung lien ket trong trang HTML, gan vao mang Links
if (preg_match_all('/<a href="(.+?)"/im',$HTML,$links,PREG_SET_ORDER))
$j=1;
for($i = 0; $i < count($links); $i++)
{
if (ereg (".htm|.html|.php|.aspx", $links[$i][1]))
//Chỉ lấy những tập tin web
{
$dslienket[$j]= $file."/". $links[$i][1];
$j++;
}
}
// -------------------In tieu de bang -------------------------
?>
<body topmargin="0">
<table width="100%" border="0">
<tr bgcolor="#99CCFF">
<td height="38" colspan="5" scope="col"><div align="center">
<span class="style6"><span class="style24">CHƯƠNG TRÌNH TÌM KIẾM CHỮ VIẾT TẮT MỚI TỰ ĐỘNG TỪ INTERNET LƯU VÀO CSDL MySQL</span></span><span class="style27"></span><strong><br>
</strong></div></td><br> </tr>
<tr bgcolor="#CBE4E4">
<td height="21" colspan="5" scope="col"><div align="left">
<p><strong><span class="style1">
<span class="style4"><img src="../Image/nutdo.gif" width="6" height="6"> Đầu vào</span> <span class="style14">URL=</span>
<?php print "$url";?>
</span>.<br></strong><strong><br>
<?php
$m=0;
$dslienket[$m]= $url; // Lấy cả đường dẫn hiện hành.
$solk=count($dslienket);
?>
Tìm thấy danh sách<span class="style1">
<?php print "$solk";?> <span class="style4">l</span>
</span></strong><span class="style6">iên kết</span><strong>: </strong><br>
<?php
for($j = 0; $j < $solk; $j++)
{ print "$dslienket[$j] <br>";}
?>
<strong><br>
<span class="style1"><span class="style4"><img src="../Image/nutdo.gif" width="6" height="6"></span></span> Bảng kết quả <span class="style14">chữ viết tắt </span>tìm được:</strong></p>
</div></td></tr>
<tr bgcolor="#99CCFF">
<td width="3%" height="31" class="style1" scope="col"><div align="center" class="style25">STT</div></td>
<td width="14%" class="style1" scope="col"><div align="center" class="style25">Chữ viết tắt tìm thấy</div></td>
<td width="28%" scope="col"><div align="center" class="style25">Trích dẫn cụm từ viết tắt </div></td>
<td width="18%" scope="col"><div align="center" class="style25">Đánh giá CVT tìm thấy</div></td>
<td width="37%" scope="col"><div align="center" class="style25">Câu/đoạn chứa cụm chữ viết tắt</div></td></tr>
<?php
// ---Đọc mỗi liên kết trong $dslienket và tìm kiếm CVT - Lưu vào CSDL:--
$socvt=0; // Biến đếm tổng số CVT
for($ii = 0; $ii < count($dslienket); $ii++)
{
$url_ii=$dslienket[$ii];
$fd = fopen($url_ii,"r"); // Mo file de dùng lenh
while( $doan = fgets($fd,1024) ) // Vòng lặp
{
if (ereg ("\(|\)", $doan) and ($doan<>""))// Chỉ xét những đoạn có dâu (
hoặc ) và khác rỗng - moi co CVT
{
$doan = trim($doan); // Xoa bo khoang trang dau va cuoi chuoi
// Loai bo cac the HTML:
$doan = strip_tags($doan);
$doan = ereg_replace('/&\w;/', '', $doan);
preg_match_all("/[^.]+/",$doan,$motcau); // Trich mot cau
// Vong lap xu ly cac tu de dua vao data.
for( $i = 0; $motcau[$i]; $i++ )
{
for( $j = 0; $motcau[$i][$j]; $j++ ) //xet tu hien hanh
{
if (ereg ("\(|\)", $motcau[$i][$j]) and ($motcau[$i][$j]<>""))
// chỉ xét câu có (...) và khác rỗng
{
$xetcau = $motcau[$i][$j];
$btcqdaungoac="/[^\(]+[\)$]/";// RE chọn các cụm từ ()
preg_match_all($btcqdaungoac,$xetcau,$tuduocchon);
// Biến $tuduocchon lưu những cụm từ (...)
$cvtmoi="Chữ mới";
$Ngay="curdate()";
for( $k = 0; $tuduocchon[$k]; $k++ )
{
for( $h = 0; $tuduocchon[$k][$h]; $h++ )
{
$tudangxet = $tuduocchon[$k][$h];
$dai= strlen($tudangxet);
$tudangxet=substr($tudangxet,0,$dai-1);
// Loai bo dau ngoac cuoi
$btcq_so1="[-+]?([0-9]*[\.,-\/])?[0-9]+";
$dai= strlen($tudangxet);
if ((!ereg ($btcq_so1, $tudangxet)) and ($dai <=21) and
(testdauhieucvt($tudangxet))) // Kiểm tra dấu hiệu CVT
{
$socvt=$socvt+1;
$nghiacvt=nghiacau($xetcau,$tudangxet);
// Gọi hàm trích nghĩa CVT
$cvtmoi="Chữ viết tắt mới";
// Kiem tra CVT co trung lap trong bang 'cvtviet' va
‘tttdcvt’ hay khong?
$result1 = mysql_query("SELECT cvt FROM cvtviet
WHERE cvt = \"$tudangxet\"");
$row1 = mysql_fetch_array($result1);
$result2 = mysql_query("SELECT cvt FROM tttdviet
WHERE cvt = \"$tudangxet\"");
$row2 = mysql_fetch_array($result2);
if( $row1['cvt'] )
{$cvtmoi="Trùng lặp với dữ liệu đã biên tập";}
if( $row2['cvt'] )
{$cvtmoi="Trùng lặp dữ liệu chưa biên tập.";}
if (( $row1['cvt'] ) and ( $row2['cvt'] ))
{$cvtmoi="Trùng lặp dữ liệu chính và chưa biên";} //---------- In ra màn hình IE:
?>
<tr bordercolor="#000000" bgcolor="#DEEFEF">
<td><div align="center"><?php print "$socvt";?></div></td>
<td>
<?php print "$tudangxet";?></td>
<td><?php print "$nghiacvt";?></td>
<td><?php print "$cvtmoi";?></td>
<td><?php print "$xetcau";?></td> </tr>
<?php
//Luu $tudangxet, $xetcau, $doan, "CVT mới" vao bang ‘tttdviet’
$luunguon=$url_ii; // Nếu muốn lưu trang có chứa CVT
$luunguon=str_replace('\/','\/\/',$luunguon); // Xử lý đường dẫn
$sql="INSERT INTO tttdviet (cvt,cau,Doan,NguonURL,GhiChu,Ngay) VALUES "; $sql.="(\"$tudangxet\",\"$nghiacvt\",\"$xetcau\",\"$luunguon\",\"$cvtmoi\",$Ngay)";
mysql_query($sql);
} //if
} //h
} //k
} //if
} //j
} //i
} //if
} //While
fclose($fd);
} // For
$xy= date("H:i:s");
?>
</table>
<p align="center">Kết quả tìm được <span class="style1"><?php print "$socvt ";?> </span>chữ viết tắt đã lưu vào CSDL. <br>
Thời gian bắt đầu: <span class="style1"><?php print "$xx";?></span> <br>
Thời gian kết thúc: <span class="style1"><?php print "$xy";?></span> <br>
====Viết bởi: Nguyễn Nho Tuý - Email: <a href="mailto:nhotuy@dng.vnn.vn"> tuynn.dng@vnpt.vn</a> =========</p> <p align="left"> </style>
</body>
</html>