一个查询、修改单词的界面和后台用XML文件存放单词的php程序
发布时间:2020-12-16 05:15:23 所属栏目:百科 来源:网络整理
导读:直接贴代码吧!主要有两个文件,一个查询、修改单词的表单所处的页面。然后另外一个文件用于将单词保存到XML文件中,使用的类是DOMDocument类。这个类就是用于操作XML文件的。 headtitletest for xml file/titlescript type="text/javascript"!--function cs
|
直接贴代码吧!主要有两个文件,一个查询、修改单词的表单所处的页面。然后另外一个文件用于将单词保存到XML文件中,使用的类是DOMDocument类。这个类就是用于操作XML文件的。 <head>
<title>test for xml file</title>
<script type="text/javascript">
<!--
function cssShow(){
var b=document.getElementById("sele");
if(b.value==2){
document.getElementById("desc").style.display="none";
document.getElementById("note").style.display="none";
}
else {
document.getElementById("desc").style.display="inline-block";
document.getElementById("note").style.display="inline-block";
}
}
-->
</script>
</head>
<form action="./test.php" method="post">
word:<input type="text" size=20 name="word"/><br/>
<span id="desc">descri:<input type="text" size=20 name="descri"/></span><br/>
<span id="note">note:<input type="text" size=20 name="note"/></span><br/>
<select id="sele" name="select" onchange="javascript:cssShow();">
<option value="1" selected="selected">insert</option>
<option value="2">query</option>
</select><br/>
<input type="submit" value="submit"/>
</form>
<?php
header("content-type:text/html;charset=utf-8");
require_once 'xml.class.php';
if(isset($_POST['select'])){
$word=$descri=$note="";
$dom = new XMLOper();
if(isset($_POST['word'])){
$word=$_POST['word'];
$word=strtoupper($word);
}
if(isset($_POST['descri'])){
$descri=$_POST['descri'];
}
if(isset($_POST['note'])){
$note=$_POST['note'];
}
$arr=array($descri,$word,$note);
switch($_POST['select']){
case 1:if(!$dom->checkWord($word)){$dom->xml_insert($arr);$dom->save();echo "successful";}
else {echo "danci has exist yet!";}exit;
case 2:if(!$dom->checkWord($word)) die("no word in the dbtable");
$arr=$dom->xml_query($word);
if($arr[0]==""){
die("no word in xml");
}
echo "result:<br/>word:$arr[0]<br/>descri:$arr[1]<br/>note:$arr[2]";
}
}
?>
xml.class.php文件如下: <?php
class XMLOper {
private $dom;
private $root;
public function __construct(){
$this->dom =new DOMDocument("1.0","utf-8");
$this->dom->formatOutput=true;
}
public function xml_query($word){
$bool=$this->dom->load("test.xml");
if(!$bool)echo "error when load the xml file<br/>";
$arr=array();
$temp=$this->dom->getElementById($word);
$arr[0]=$temp->getElementsByTagName("NAME")->item(0)->nodeValue;
$arr[1]=$temp->getElementsByTagName("DESCRI")->item(0)->nodeValue;
$arr[2]=$temp->getElementsByTagName("NOTES")->item(0)->nodeValue;
return $arr;
}
public function setTextNode($Node,$content){
$Node->appendChild($this->dom->createTextNode($content));
}
public function xml_insert($contentArray){
$arr=array("WORD","DESCRI","NAME","NOTES");
$this->setRootEle("DANCI");
for($j=0;$j<4;$j++){
$tempArr[$j]=$this->dom->createElement($arr[$j]);
}
$word=$this->root->appendChild($tempArr[0]);
for($j=1;$j<4;$j++){
$this->setTextNode($word->appendChild($tempArr[$j]),$contentArray[$j-1]);
}
$word->setAttribute("id",$contentArray[1]);
}
public function setRootEle($name){
$this->root=$this->dom->appendChild($this->dom->createElement($name));
}
public function checkWord($word){
$str=file_get_contents("test.xml");
if(preg_match("/<NAME>".$word."</NAME>/",$str)==1)return true;
else return false;
}
public function save(){
$this->dom->save("temp.xml");
$fp=fopen("temp.xml","r+");//不能用w+,要不然文件就会被覆盖,这种方式会覆盖之前写过的信息,而不是插入。
/*下面的一句话就可以让保存的文件的编码设为UTF-8,而文件默认编码方式为ANSI。这一点可以用记事本程序查看文件的编码方式
fwrite($fp,"xefxbbxbf");*/
fwrite($fp,"<?xml ?>");
fgets($fp,200);//第一行字节留有200足够,使文件指针转移到下一行
//fgets($fp,200);
$xml="";
while(!feof($fp)){
$xml.=fread($fp,1024);
}
$xml.="</TABLE>";
fclose($fp);
$str=file_get_contents("test.xml");
$pattern="/</TABLE>/";$replacement="";
$str=preg_replace($pattern,$replacement,$str);
file_put_contents("test.xml",$str);
$fp=fopen("test.xml","a+");
fwrite($fp,$xml);
fclose($fp);
}
}
?> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Oracle排名函数(Rank)实例详解
- c# – List.Find()即使谓词匹配也返回null
- c# – WinRT替换System.Environment.TickCount
- react转vue——vue2条件渲染、列表渲染、事件处理器实现(4
- 基于WINCE6.0系统,SD卡和flash作为PC机的U盘
- 《从零开始学Swift》学习笔记(Day3)――Swift2.0之后增加
- c – 使用constexpr initializer_list构造函数时,MSVC无法编
- NSXMLParser实现XML解析
- DWR3 高级主题之反向Ajax(DWR3的comat模式演示1)
- FILE *和int值fd之间有什么区别/关系?
