PHP在线字典

转载请保留版权,http://hacker-piao.cn  谢谢!

昨天实习的一个小任务,PHP在线字典,还是抓取远程数据的方式实现,与天气预报类似,不多说了,直接上代码!

<?php
/********************************
*********************************
*********PHP在线字典**************
***Author:hacker-piao@163.com****
****http://hacker-piao.cn********
*********************************
********************************/
 
if($_POST['submit'] == '查询') {
	$word = $_POST['word'];
	if(!preg_match ("/^[\x{4e00}-\x{9fa5}]$/u",$word))
		exit('非法输入!');//utf-8编码的中文匹配正则表达式
	$sql = "SELECT * FROM `DIC` WHERE wenzi='$word'";
	$link = mysql_connect('localhost', 'username', 'password');//用户名密码自己修改
	if (!$link) {
		die('Could not connect: ' . mysql_error());
	}
	mysql_select_db('dic', $link) or die ('Can\'t use database : ' . mysql_error());
	mysql_query("SET NAMES utf8") or die("Invalid query: " . mysql_error());
	$result = mysql_query($sql) or die("Invalid query: " . mysql_error());
	$row = mysql_fetch_array($result, MYSQL_ASSOC);
	if($row) {
		echo "拼音:".$row['pinyin']."<br/>";
		echo "汉字:".$row['wenzi']."<br />";
		echo("部首:".$row['bs']."<br />");
		echo("部首笔划:".$row['bsbh']."<br />");
		echo("繁体:".$row['ft']."<br />");
		echo("全字笔划:".$row['qzbh']."<br />");
		echo("五笔:".$row['wb']."<br />");
		echo("区位号码:".$row['qwhm']."<br />");
		echo stripslashes($row['detail']);//取消转义后显示
	} else {
		$word = urlencode(iconv("UTF-8","gbk",$word));//将本地UTF-8编码的数据转化为远程gb2312编码方式
		$url = "http://xh.bm8.com.cn/Show.asp?f_key=";//采集数据的网址
		$url .= $word;
		$content = file_get_contents($url);
		if(!$content)
			die("读取数据失败!");
		$content = iconv("gbk","UTF-8",$content);//远程gb2312编码转化成本地UTF-8编码方式
		preg_match_all("/<td width=\"15%\" rowspan=\"3\" align=\"center\" valign=\"middle\"  >(.*?)<table width=\"268\" border=\"0\" align=\"right\"/is",$content,$main);
		if($main[0][0]) {
			$main = preg_replace("/<div id=\"new\">(.*?)flash\"\/>< \/div>/is","",$main[1][0]);//去广告
			preg_match_all("/<font size=\"4\">(.*?)< \/font>/is",$main,$pinyin);
			$pinyin = $pinyin[1][0];
			print_r("拼音:".$pinyin."<br />");
			preg_match_all("/style=\"line-height:120%\">(.*?)< \/font>/is",$main,$wenzi);
			$wenzi = $wenzi[1][0];
			print_r("汉字:".$wenzi."<br />");
			preg_match_all("/< \/table>< \/TD>(.*?)< \/div>/is",$main,$main1);
			if(preg_match_all("/<td (.*?)<\/TD>/is",$main1[1][0],$tmp)) {
				$bs = strip_tags($tmp[0][1]);//部首
				$bsbh = strip_tags($tmp[0][3]);//部首笔划
				$ft = strip_tags($tmp[0][5]);//繁体
				$qzbh = strip_tags($tmp[0][7]);//全字笔划
				$wb = strip_tags($tmp[0][9]);//五笔
				$qwhm = strip_tags($tmp[0][11]);//区位号码
				}
			preg_match_all("/</td><td height=24 colspan=\"5\" valign=\"top\"  >(.*?)< \/div>/is",$main,$detail);
			$detail = strip_tags($detail[0][0]);
			echo("部首:".$bs."<br />");
			echo("部首笔划:".$bsbh."<br />");
			echo("繁体:".$ft."<br />");
			echo("全字笔划:".$qzbh."<br />");
			echo("五笔:".$wb."<br />");
			echo("区位号码:".$qwhm."<br />");
			echo($detail);
			$detail = addslashes($detail);//转义单双引号后存入数据库
			$sql = "INSERT INTO `DIC` (pinyin,wenzi,bs,bsbh,ft,qzbh,wb,qwhm,detail) values ('$pinyin','$wenzi','$bs','$bsbh','$ft','$qzbh','$wb','$qwhm','$detail')";
			$result = mysql_query($sql) or die("Invalid query: " . mysql_error());
			if(!$result)
				exit("操作数据库失败!");
			}
			else echo "匹配数据失败!";
		}
		mysql_close($link);
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</meta>
</head>
<form name="form" method="POST" action="dic.php">
请输入要查询的汉字<input type="text" name="word" />
<input type="submit" name="submit" value="查询"/></form>
</html>

数据库字段也就上述几个,其它好像没什么了,OVER !

相关日志

  1. 南柯一梦 说:

    怎么不用CodeBox来贴代码?这样要好看很多

    [回复]

    admin 回复:

    换服务器以后插件就没办法自动下载安装了,估计是配置问题,所以一直没弄。

    [回复]

  1. There are no trackbacks for this post yet.

Leave a Reply