php无需mysql留言本程序代码(基于xml)

 更新时间:2016年11月25日 15:40  点击:1597
大多数据站长做留言板功能都会与数据库连接起来了,今天我们给大家分享一个基于xml留言板程序了。

php中操作xml文档我们会使用SimpleXMLElement函数,我们先了解一下SimpleXMLElement函数用法
SimpleXML 函数允许您把 XML 转换为对象。
通过普通的属性选择器或数组迭代器,可以处理这个对象,就像处理任何其他对象一样。

例子

xml文档格式

 代码如下 复制代码

<?php
error_reporting(E_ALL ^ E_NOTICE);
$op=$_GET['op'];
$op || $op='list';

$filename='guestbook.xml';
if(is_file($filename)){
 $gb=simplexml_load_file($filename);
}else{
 $gb=new SimpleXMLElement("<?xml version='1.0' encoding='utf-8'?><guestbook></guestbook>");
}
if($op=='list'){
 header("Content-Type:text/html;charset=utf-8");
 if(is_object($gb)){
echo "<table>";
echo "<tr><th>ID</th><th>用户</th><th>标题</th><th>标题</th><th>内容</th><th>时间</th><th>IP</th></tr>";
foreach($gb->item as $v){
 echo "<tr>";
 echo "<td>".htmlspecialchars($v->id)."</td><td>".htmlspecialchars($v->user)."</td><td>".htmlspecialchars($v->title)."</td><td>".htmlspecialchars($v->content)."</td><td>".date("Y-m-d H:i",intval($v->time))."</td><td>".htmlspecialchars($v->ip)."</td>";
}
echo '<table>';
 }
 echo "<div><a href='guestbook.php?op=add'>添加</a></div>";
}elseif($op=='save'){
 if(@$_POST['user']){
$user=$_POST['user'];
$title=$_POST['title'];
$content=$_POST['content'];

/*
$id=@count($gb->item);
$nextid=$id+1;
*/
$nextid=1;
foreach($gb->item as $v){
 $idarr[]=(int)$v->id;
}
$nextid=max($idarr)+1;
$item=$gb->addChild('item');
$item->addChild("id",$nextid);
$item->addChild('user',$user);
$item->addChild('title',$title);
$item->addChild('content',$content);
$item->addChild('time',time());
$item->addChild('ip',$_SERVER['REMOTE_ADDR']);
$gb->asXML($filename);
//跳转页,中间页
header("Location: guestbook.php?op=list");
die;
 }
}elseif($op=='add'){
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
 <title>Document</title>
</head>
<body>
<form action="guestbook.php?op=save" method="post">
<div>用户:<input type="text" name="user"></div>
<div>标题:<input type="text" name="title"></div>
<div>留言:<textarea name="content" id="" cols="30" rows="10"></textarea></div>
<div><input type="submit"  value="提交留言"></div>
</form>
</body>
</html>
<?php
}
?>

清除字符串中空白或空格我们可以使用ereg_replace函数进行替换了,下面给大家整理了一个页面希望对各位有帮助。

去除所有空白

 代码如下 复制代码
function delete($str) {
    $str = trim($str);
    $str = ereg_replace("\t","",$str);
    $str = ereg_replace("\r\n","",$str);
    $str = ereg_replace("\r","",$str);
    $str = ereg_replace("\n","",$str);
    $str = ereg_replace("    ","",$str);
    return trim($str);
}

去除所有注释用preg_replace()函数把注释替换成空(是空,不是空格)。
 去掉字符串中的空格 str_replace(' ','',$cat_name)

 代码如下 复制代码
 
$str = ” This line contains\tliberal \r\n use of   whitespace.\n\n”;
$str = trim($str);// 首先去掉头尾空格
$str = preg_replace(’/\s(?=\s)/’, ‘’, $str);// 接着去掉两个空格以上的
$str = preg_replace(’/[\n\r\t]/’, ‘ ‘, $str);// 最后将非空格替换为一个空格

使用上面的例子可以去掉所有多余的空格。
首先使用TRim()去头尾空格,
接着用preg_replace()去掉重复的空格。
当中的(?=)表示只匹配后面的空格跟随前面的空格的空格。
 

 代码如下 复制代码

<?php
$str1="   tt 七夕快乐!nr"; //这里定义一个字符变量,其中包括"空格","t", 水平制表符,"n",换行符
//这里主要调用trim()函数去除空格等,trim()函数用于去除字符中的""空格,"t"水平制表符"n"换行符,"r"回车符
//"\0"字符串结束符,"xOB"垂直制表符。如果想通过此函数过滤掉特殊的字符,可以制定第二个参数。
echo trim($str1)."<br>";
//这里是去除$str1变量中带有tt的字符
echo trim($str1," tt")."<br>";
//定义变量$str2其中包括"."和空格
$str2="... 情人节快乐!...   中国...";
//调用trim()函数去除$str2变量中的空格
echo trim($str2)."<br>";
//ltrim()函数用于去除字符串左边的空格或指定字符串,其默认的字符同trim一样。因为这里指定了第二个参数,
//所以只去除$str2变量中左边的"."
echo ltrim($str2,".")."<br>";
//ltrim()函数用于去除字符串(右)边的空格或指定字符串,其默认的字符同trim一样。因为这里指定了第二个参数,
//所以只去除$str2变量中左边的"."
echo rtrim($str2,".")."<br>";
?>

<?php
echo substr("today is father day!",0)."<br>";
echo substr("today is father day!",6,2)."<br>";//这里只截取字符串中第6字符开始截取,并只截取2个字符
echo substr("today is father day!",-5,5)."<br>";//这里从字符串的倒数第5个字符开始截取,截取5个字符
echo substr("today is father day!",0,-5)."<br>";//这里只截取字符串中的首个字符开始截取,截取到字符串的倒数第5个
echo substr("today is father day!",-5,-1)."<br>";//这里从字符串的倒数第5个字符开始截取,截取倒数第一个字符
?>

补充一个:php注释和去除空格

 代码如下 复制代码


/**
 * 去除代码中的空白和注释
 * @param string $content 代码内容
 * @return string
 */
function strip_whitespace($content) {
    $stripStr   = '';
    //分析php源码
    $tokens     = token_get_all($content);
    $last_space = false;
    for ($i = 0, $j = count($tokens); $i < $j; $i++) {
        if (is_string($tokens[$i])) {
            $last_space = false;
            $stripStr  .= $tokens[$i];
        } else {
            switch ($tokens[$i][0]) {
                //过滤各种PHP注释
                case T_COMMENT:
                case T_DOC_COMMENT:
                    break;
                //过滤空格
                case T_WHITESPACE:
                    if (!$last_space) {
                        $stripStr  .= ' ';
                        $last_space = true;
                    }
                    break;
                case T_START_HEREDOC:
                    $stripStr .= "<<<THINK\n";
                    break;
                case T_END_HEREDOC:
                    $stripStr .= "THINK;\n";
                    for($k = $i+1; $k < $j; $k++) {
                        if(is_string($tokens[$k]) && $tokens[$k] == ';') {
                            $i = $k;
                            break;
                        } else if($tokens[$k][0] == T_CLOSE_TAG) {
                            break;
                        }
                    }
                    break;
                default:
                    $last_space = false;
                    $stripStr  .= $tokens[$i][1];
            }
        }
    }
    return $stripStr;
}

前面有讲过一个目录遍历的例子,这个例子有一点不一样他可以利用php目录遍历出来的目录或文件进行一个树型的展示效果。

遍历出来的效果如下

php+jquery实现无限级目录遍历展示代码

程序代码


index.php 里面的jquery文件大家可百度下载一个,因为这是用来实现一个效果的

 代码如下 复制代码

<script src="jquery/jquery-1.3.1.js" type="text/javascript"></script>
<style type="text/css">
body
{font: normal 12px arial, tahoma, helvetica, sans-serif;margin:0;background:#fff;padding:30px;}
*{ margin:0; padding:0;}
ul{ visibility:visible; cursor:pointer;}
.simpleTree li{font-size:14px; list-style: none;margin:0 0 0 50px;padding:0 0 0 34px;line-height: 18px;margin-left:-13px;background: url(jquery/images/expandable.gif) 0 -2px no-repeat #fff;}
.simpleTree li span{display:inline;clear: left;white-space: nowrap;}
li.root{padding:0 0 0 20px;line-height:20px;background: url(jquery/images/root.gif) 0 2px no-repeat #fff;}
li.file{padding:0 0 0 35px;line-height:20px;background: url(jquery/images/leaf-last.gif) 0 2px no-repeat #fff;}
</style>
<script type="text/javascript">
$(function(){

 $(".simpleTree").children("li").find("ul").hide();
$("span").click(function(){
 var $this_ul=$(this).siblings("ul");
 if($this_ul.is(":visible")){
$this_ul.stop(false,true).hide();

 }else{
$(this).siblings("ul").stop(false,true).show().end().stop(false,true).siblings("ul").find("ul").hide();
 }

})


})

</script>
<?php

include("function.php");

$path="目录/";//目录名
echo "<ul class='simpleTree'><li class='root'><span>目录</span>"; //目录名,和path 中名称一样
list_dir($path);

echo "</ul></li>";
?>

function.php 这个文件包含了遍历目录的函数了

 代码如下 复制代码

<?php
/*输出当前目录下的所有文件数量*/
function files_count($path,  & $i=0){
if($opendir=opendir($path)){
//===============
while($file=readdir($opendir) ){
if($file!="."&&$file!=".."){
 if(is_file($path."/".$file)){
  $i++;
 ;
 }else{

  files_count($path."/".$file, $i);
 }

 }

}

//=============
return  "(".$i.")";
}

}

//echo files_count("目录/目录1/3/");

//=============================//
/*遍历目录*/
function list_dir($path){
if($opendir=opendir($path)){


}
echo "<ul>";
while($file=readdir($opendir)){
 if($file!="."&&$file!=".."){

  if(is_dir($path."/".$file)){

 

$bar=scandir($path."/".$file);
unset($bar[0]);
unset($bar[1]);
if(count($bar!==0)){
 echo "<li><span>".$file.files_count($path."/".$file)."</span>";
 list_dir($path."/".$file);
}


  }else{

   echo "<li class='file'><a  href='".$path."/".$file."'>".$file."</a></li>";
  }

  }

 }
echo "</ul></li>";
}
?>

我们用到最多的日志肯定是数字型的日期了,但有时工作需要要把日期转换成中文要怎么处理?下面一起来看一个php日期转中文程序代码吧。

如果我们直接使用date函数获取日期显示的是数字的,如下

 代码如下 复制代码

<?php  
   echo   date("Y-m-d");  
?>

输出的

2014-10-11

那么我们如果想得到

二零一四年十月十一日

怎么处理呢,后来看到一个朋友写了一句话函数

 代码如下 复制代码

<?php
#php日期转中文
$str = '2014-10-11';
echo str_replace(str_split('0123456789'), str_split('零一二三四五六七八九',3), date('Y',strtotime($str)).'年'.trim(str_replace('1十','十',implode('十', str_split(date('n',strtotime($str))))),'0').'月'.trim(str_replace('1十','十',implode('十', str_split(date('d',strtotime($str))))),'0')).'日';
?>

输出结果:

二零一四年十月十一日

php中数组遍历方法有很多种,如有:for,foreach,while(),list(),each()这些函数与方法都要我们在数组遍历中会用到的,下面给大家介绍一下。

1. 使用for语句循环遍历数组

a. 其它语言(只有这一种方式)
b. PHP中这种方式不是我们首选方式
c. 数组必须是索引数组,而且下标还必须是连续的 索引数组下标还可以不连序,数组还有关联数组)

 代码如下 复制代码

< ?php
/*
* 我们想要在遍历的过程中改变以下数组中某些元素的值
*/
$people = Array(
Array(’name’ => ‘Kalle’, ’salt’ => 856412),
Array(’name’ => ‘Pierre’, ’salt’ => 215863)
);
for($i = 0; $i < sizeof($people); ++$i)
{
$people[$i]['salt'] = rand(000000, 999999);
}
?>

以上代码的问题,在于for的第二个表达式会导致代码执行很慢--因为每次循环时都要 计算一遍数组的长度。由于数组的长度始终不变,我们可以用一个中间变量来存储数组长度, 然后用这个变量作为for循环的第二个表达式。这样在循环的时候就可以直接使用该变量的值, 不用每次重新计算。 如下:

 代码如下 复制代码

< ?php
$people = Array(
Array(’name’ => ‘Kalle’, ’salt’ => 856412),
Array(’name’ => ‘Pierre’, ’salt’ => 215863)
);
for($i = 0, $size = sizeof($people); $i < $size; ++$i)
{
$people[$i]['salt'] = rand(000000, 999999);
}
?>

2. 使用foreach语句循环遍历数组

foreach(数组变量 as 变量值){
 循环体
}

a. 循环次数由数组的元素个数决定
b. 每一次循环都会将数组中的元素分别赋值给后面变量

foreach(数组变量 as 下标变量=> 值变量){

}

例子

 代码如下 复制代码

foreach遍历3维数组
 //foreach循环一个3维数组
/*
$biaoge=array(
"市场部"=>array(
array(1,"gaomou1","jingli11",4000),
array(2,"gaomou2","jingli22",4000),
array(3,"gaomou3","jingli33",4000)
 ),
"客服部"=>array(
array(1,"gao1","li11",4000),
array(2,"gao2","li22",4000),
array(3,"gao3","li33",4000)
),
"业务部"=>array(
 array(1,"mou1","jing11",4000),
 array(2,"mou2","jing22",4000),
 array(3,"mou3","jing33",4000)
)
 );
foreach($biaoge as $key=>$value){
echo '<table align="center" width="600" border="1">';
echo '<caption>联系表</caption>';
echo '<tr bgcolor="#dddddd">';
echo '<th>标号</th><th>名字</th><th>职位</th><th>工资</th></tr>';
foreach($value as $row){
if($row%2==0){
$bg="#ffffff";
 }else{
 $bg="#dddddd";
 }
 echo '<tr bgcolor='.$bg.'>';
 foreach($row as $col){
 echo '<td>'.$col.'</td>';
 }
 echo '</tr>';
}
echo '</table>';
 }
echo "<pre>";
print_r($biaoge);
echo "</pre>";

3. while() list() each() 组合循环遍历数组

each()函数,
 
a. 需要一个数组作为参数
b. 返回来的也是一个数组
c. 返回来的数组是0, 1, key, value四个下标(固定的)

0和key下标是当前参数数组元素的?

1和value下标是当前对数数组元素的值

d. 默认认当前元素就是第一个元素
e. 每执行一次后就会将当前元素向后移动
f. 如果到最后的元素再执行这个函数,则返回false

使用each遍历数组的示例代码如下:

 代码如下 复制代码
<?php
//使用each函数遍历数组
$arrGoogle=array('google','Gmail','Chrome','Android');
//第一次使用each取得当前键值对,并且将指针移到下一个位置
$arrG=each($arrGoogle);
//打印结果,并且换行以清晰显示结果
print_r($arrG);
print '<br>';
$arrGmail=each($arrGoogle);
print_r($arrGmail);
print '<br>';
$arrChrome=each($arrGoogle);
print_r($arrChrome);
print '<br>';
$arrAndroid=each($arrGoogle);
print_r($arrAndroid);
print '<br>';
//当指针位于数组末尾再次执行函数each,如果是这样再次执行结果返回false
$empty=each($arrGoogle);
//如果指针无法继续后移返回false
if($empty==false){
print '指针以位于数组末尾,无法在向后移,故返回false';
}
?>

注意:该函数的参数和返回值(在执行该函数前指针不位于数组末尾时)都为数组,在执行函数前数组指针位于数组末尾时再次执行该函数返回值为false
       开始的位置是第一个元素,每(正常)执行一次该函数,指针向后移到下一个地址 
list()函数

a. list()=array(); 需要将一个数组赋值给这个函数
b. 数组中的元素个数,要和list()函数中的参数个数相同
c. 数组中的每个元素值会赋值list()函数中的每个参数,list()将每个参数转为变量
d. list()只能接收索引数组
e. 按索引的下标的顺序

这不是真正的函数,而是PHP的语言结构。list()用一步操作给一组变量进赋值,即把数组中的值赋给一些变量。list()仅能用于数字索引的数组并假定数字索引从0开始。语法格式如下所示:

list(mixed varname,mixed ...)=array_expression             //list()语句的语法格式
list()语句和其它函数在使用上有很大的区别,并不是直接接收一个数组作为参数。而是通过“=”去处符以赋值的方式,将数组中每个元素的值,对应的赋给list()函数中的每个参数。list()函数又将它中的每个参数转换为直接可以在脚本中使用的变量。使用方法如下 :

 代码如下 复制代码
<?php
$info=array('coffee','brown','caffeine');              //声明一个索引数组$info
 
list($drink,$color,$power)=$info;                      //将数组中的所有元素转为变量
echo "$drink is $color and $power makes it special.n";//输出的三个变量值是数组中三个元素的值
 
list($drink, ,$power)=$info;                           //将数组中的部分元素变为变量
echo "$drink has $power.n";                           //输出的两个变更值是数组中的前两个元素的值
 
list(,,$power)=$info;                                  //跳过前两个变量只将数组中第三个元素的值转为变量
echo "I need $power!n";                               //输出的一个变量值是数组中桃花汛三个元素的值勤
?>

通过上例了解list()函数的用法之后,将each()函数和list()函数结合起来使用。代码如下:

 代码如下 复制代码

<?php
$contact=array("ID"=>1,"姓名"=>"高某","公司"=>"A公司","地址"=>"北京市");
list($key,$value)=each($contact);           //将each()函数和list()函数联合使用
echo "$key=>$value";                        //输出变量$key和$value,中间使用"=>"分隔
?>

while() 函数

while()循环的语法格式如下:

 代码如下 复制代码
while( list($key,$value) = each(array_expressin) ){
       循环体;
}

使用这种组合改写前面使用foreach遍历过的一维数组。代码如下所示:

 代码如下 复制代码

<?php
 //声明一个一维的关联数组$contact
 $contact=array("ID"=>1,
  "姓名"=>"高某",
  "公司"=>"A公司",
  "地址"=>"北京市",
  "电话"=>"(010)987665432",
  "EMAIL"=>"gao@php.com"
 );
 //以HTML列表的方式输出数组中每个元素的信息
 echo '<dl>一个联系人信息:';
 while(list($key,$value) = each($contact) ){      //将foreach语句改写成while,list()和each()的组合
  echo "<dd>$key:$value</dd>";                 //输出每个元素的键/值勤
  }
 echo '</dl>';
?>

while() 遍历数据是需要结合list或each函数配置才可以遍历哦,否则 它单独是无法完成数组遍历的哦。

[!--infotagslink--]

相关文章

  • C#开发Windows窗体应用程序的简单操作步骤

    这篇文章主要介绍了C#开发Windows窗体应用程序的简单操作步骤,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-04-12
  • C++调用C#的DLL程序实现方法

    本文通过例子,讲述了C++调用C#的DLL程序的方法,作出了以下总结,下面就让我们一起来学习吧。...2020-06-25
  • 不打开网页直接查看网站的源代码

      有一种方法,可以不打开网站而直接查看到这个网站的源代码..   这样可以有效地防止误入恶意网站...   在浏览器地址栏输入:   view-source:http://...2016-09-20
  • php 调用goolge地图代码

    <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
  • JS基于Mootools实现的个性菜单效果代码

    本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
  • C#使用Process类调用外部exe程序

    本文通过两个示例讲解了一下Process类调用外部应用程序的基本用法,并简单讲解了StartInfo属性,有需要的朋友可以参考一下。...2020-06-25
  • 微信小程序 页面传值详解

    这篇文章主要介绍了微信小程序 页面传值详解的相关资料,需要的朋友可以参考下...2017-03-13
  • JS+CSS实现分类动态选择及移动功能效果代码

    本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
  • JS实现自定义简单网页软键盘效果代码

    本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
  • php 取除连续空格与换行代码

    php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
  • php简单用户登陆程序代码

    php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p>&nbsp;</p> <p>&nbsp;</p> <form name="form1...2016-11-25
  • PHP实现清除wordpress里恶意代码

    公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
  • 使用GruntJS构建Web程序之构建篇

    大概有如下步骤 新建项目Bejs 新建文件package.json 新建文件Gruntfile.js 命令行执行grunt任务 一、新建项目Bejs源码放在src下,该目录有两个js文件,selector.js和ajax.js。编译后代码放在dest,这个grunt会...2014-06-07
  • js识别uc浏览器的代码

    其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
  • JS实现双击屏幕滚动效果代码

    本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
  • JS日期加减,日期运算代码

    一、日期减去天数等于第二个日期function cc(dd,dadd){//可以加上错误处理var a = new Date(dd)a = a.valueOf()a = a - dadd * 24 * 60 * 60 * 1000a = new Date(a)alert(a.getFullYear() + "年" + (a.getMonth() +...2015-11-08
  • uniapp微信小程序:key失效的解决方法

    这篇文章主要介绍了uniapp微信小程序:key失效的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-20
  • PHP开发微信支付的代码分享

    微信支付,即便交了保证金,你还是处理测试阶段,不能正式发布。必须到你通过程序测试提交订单、发货通知等数据到微信的系统中,才能申请发布。然后,因为在微信中是通过JS方式调用API,必须在微信后台设置支付授权目录,而且要到...2014-05-31
  • PHP常用的小程序代码段

    本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24
  • 将c#编写的程序打包成应用程序的实现步骤分享(安装,卸载) 图文

    时常会写用c#一些程序,但如何将他们和photoshop一样的大型软件打成一个压缩包,以便于发布....2020-06-25