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 !
怎么不用CodeBox来贴代码?这样要好看很多
[回复]
admin 回复:
8月 7th, 2009 at 08:45
换服务器以后插件就没办法自动下载安装了,估计是配置问题,所以一直没弄。
[回复]