当前位置:  编程技术>php
本页文章导读:
    ▪PHP正则表达式读取xml数据的代码举例      以下示例使用php中的正则表达式,进行xml文件的读取。 1、xml文件内容,person.xml   代码示例: <?xml version="1.0 encoding="UTF-8"?>        <humans>        <zhangying>        <n.........
    ▪腾讯php程序员面试题-15个魔术方法的总结      问题:PHP5中魔术方法函数有哪几个,请举例说明各自的用法?  __wakeup __construct, __destruct __call, __get, __set, __isset(), __unset __sleep, __toString, __set_state, __clone __autoload 1.__autoload() 类文件自动加载.........
    ▪PHP 文件编程中读写文件的代码举例      1、fopen(创建文件和打开文件) 语法: fopen(filename,mode) filename,规定要打开的文件。mode,打开文件的模式,可能的值见下表。 mode 说明 "r" 只读方式打开,将文件指针指向文件开头。 "r+" .........

[1]PHP正则表达式读取xml数据的代码举例
    来源: 互联网  发布时间: 2013-12-24

以下示例使用php中的正则表达式,进行xml文件的读取。

1、xml文件内容,person.xml
 

代码示例:
<?xml version="1.0 encoding="UTF-8"?> 
      <humans> 
      <zhangying> 
      <name>张映</name> 
      <sex>男</sex> 
      <old>28</old> 
      </zhangying> 
      <tank> 
      <name>tank</name> 
      <sex>男</sex> 
      <old>28</old> 
      </tank> 
</humans> 

2、php处理文件,rexml.php
 

代码示例:
<?php 
    /***
    @ 使用正则表达式读取xml文件
    @ Recoded By Androidyue
    @ site www.
    ***/ 
      $xml = ""; 
      //只读模式打开所读取的文件 
      $f = fopen('person.xml', 'r'); 
      //格式化获取读取的数据 
      while( $data = fread( $f, 4096 ) ) { 
       $xml .= $data; 
      } 
      //关闭一个已打开的文件指针 
      fclose( $f ); 
      // 上面读取数据 
      preg_match_all( "//<humans/>(.*?)/<//humans/>/s", $xml, $humans );       //匹配最外层标签里面的内容 
        //格式化数据 
      foreach( $humans[1] as $k=>$human ){ 
       preg_match_all( "//<name/>(.*?)/<//name/>/", $human, $name );             //匹配出名字 
       preg_match_all( "//<sex/>(.*?)/<//sex/>/", $human, $sex );                        //匹配出性别 
       preg_match_all( "//<old/>(.*?)/<//old/>/", $human, $old );                        //匹配出年龄 
      } 
        //处理结果数据 
        foreach($name[1] as $key=>$val){ 
          echo $val." - ".$sex[$key][1]." - ".$old[$key][1]."<br>" ; 
        } 
    ?> 
 

注意:
两个文件的编码格式,请保持一致,最好都设成UTF8的字符集,以免出现莫名的错误。


    
[2]腾讯php程序员面试题-15个魔术方法的总结
    来源: 互联网  发布时间: 2013-12-24

问题:PHP5中魔术方法函数有哪几个,请举例说明各自的用法?
 __wakeup __construct, __destruct __call, __get, __set, __isset(), __unset __sleep,
__toString, __set_state, __clone __autoload

1.__autoload() 类文件自动加载函数
这个魔术方法是用来自动加载程序所用到类文件的PHP源文件,这样就避免了我们一个一个自动去require或者include了,这个函数会在试图使用尚未被定义的类时自动调用。通过调用此函数,脚本引擎在 PHP 出错失败前有了最后一个机会加载所需的类,但是我最近看过一篇文章,上面说__autoload()的效率不是很高。以下是示例代码:
 

代码示例:

<?php
功能:在当前页使用类时自动加载该类的文件
参数$className  为类的名称 可自定义

*/

function __autoload($className){

$className=strtolower()($className);//最好加上这一步,因为类首字母大写,某些系统区分文件名的大小写

require("$className.class.php");//加载类文件  One.class.php Two.class.php与本文件在同一目录下

echo '------------------------------<br>';//作为调用时的标记来测试

}

//以下两个类均未在本文件中定义

$o=new One();//使用One类,对其初始化

$t=new Two();//使用Two类,对其初始化

?>

注意这个函数如果需要正常加载,需要将文件名设置成类名(推荐小写).class.php等类名和文件名有某种关联才可以,另外如果这个函数出现异常不能被Catch捕获,将会显示Fatal Error

2.__construct() 构造函数

在C#和PHP4中构造函数的函数名都是与类名相同,当然PHP5也支持这样(如果找不到__construct方法后会找函数名与类名相同的作为构造函数),之所以这样写的好处是如果我们想更改类的名字,我们就只改类名就可以,不用在更改构造函数的函数名,同时从某种程度上减少了我们出错的概率,示例代码还是简单写一下吧!
 

代码示例:

<?php

class PcYoYo{

private $url;

function __construct($url){

$this->url=$url;

}

}

?>

3.__destruct()  析构函数

__destruct 析构方法,PHP将在对象被销毁前(即从内存中清除前)调用这个方法

默认情况下,PHP仅仅释放对象属性所占用的内存并销毁对象相关的资源.

析构函数允许你在使用一个对象之后执行任意代码来清除内存.

当PHP决定你的脚本不再与对象相关时,析构函数将被调用.

在一个函数的命名空间内,这会发生在函数return的时候.

对于全局变量,这发生于脚本结束的时候.如果你想明确地销毁一个对象,你可以给指向该对象的变量分配任何其它值.通常将变量赋值勤为NULL或者调用unset.

4.__call() 当所调用的成员方法不存在(或者没有权限)该类时调用,用于对错误后做一些操作或者提示信息

 

代码示例:

<?php

//初始化一个类

class Person{

private $name;

private $age;

private $sex;

function walk($hour,$minute){

echo "$hour :$minute We will walk<br>";

}

function run(){

}

//使用魔术方法__call

/*****

功能:在对象调用类中不存在的函数时自动调用,进行一些操作

参数:$proName 所调用函数名称  $args 参数数组  $proName ,$args  为自定义的形参可符合自己风格变动,但是这两个参数的意义是固定的

*****/

function __call($proName,$args){

echo "The $proName doesn't exist! the parameters are";

print_r($args);

echo '<br>';

}

}// the end of class

//实例化一个对象

$p=new Person();

//调用Person类中存在的方法

$p->walk(5,39);

//调用Person类中不存在的方法

$p->work();//如果没有使用魔术方法__call,则程序发生错误,错误信息Fatal error: Call to undefined method Person::work() in D:/phpnow/htdocs/holiday/magic__call.php on line 29

//如果使用了魔术方法__call,则在对象调用类中不存在的函数时,__call被自动调用,用来执行某些操作。

?>

5.__clone()

该函数在对象克隆时自动调用,其作用是对克隆的副本做一些初始化操作

 

代码示例:

<?php

//初始化一个类

class Computer{

//

public $cpu='intel';

private $monitor;

private $keyboard; 

//设置魔术方法__clone()函数

function __clone(){//如果不设置这个魔术方法那么克隆出来的就是一模一样的,__clone函数和类的构造函数类似都是做一些初始化操作

$this->cpu='AMD';//$this指的是新创建的克隆对象

}

//设置析构函数,用来比较=和clone的区别

function __destruct(){

echo '*************************************<br>';

}

}// the end of the class

//实例化一个对象

$c1=new Computer();

//使用引用的方法在添加一个引用,因为对象的引用是存放在内存中的栈内存中,如果按指针的说法,那么这样做就是在内存中有创建了一个指针指向$c1指向的对象

//我们可以通过条用析构函数判断出来这样不是复制了对象

$c2=$c1;

//使用clone方法克隆一个对象

$c3=clone $c1;

//输出两者的信息比较

echo $c1->cpu,'<br>';

echo $c3->cpu,'<br>';

?>

6.__get() 当所对象所调用的成员属性未声明或者级别为private或者protected等时,我们可以在这个函数里进行自己的一些操作

 

代码示例:

<?php

class Person{

private $name;

public $nation;

function __get($para){//必须有一个参数

echo $para.'不存在';

}

}

$p=new Person();

$name=$p->name;//call the __get function

$nation=$p->nation;//never call the __get function

?>

7.__set() 当所对未声明或者级别为private或者protected等进行赋值时调用此函数,我们可以在这个函数里进行自己的一些操作

 

代码示例:

<?php

class Pc{

private $key;

function __set($key,$value){//必须有两个参数一个是成员属性,另一个是值

echo '对'.$key.'赋值为'.$value.'失败';

}

}

$p=new Pc();

$p->key=123;

?>

 


    
[3]PHP 文件编程中读写文件的代码举例
    来源: 互联网  发布时间: 2013-12-24

1、fopen(创建文件和打开文件)
语法:
fopen(filename,mode)

filename,规定要打开的文件。mode,打开文件的模式,可能的值见下表。

mode 说明
"r" 只读方式打开,将文件指针指向文件开头。
"r+" 读写方式打开,将文件指针指向文件开头。
"w" 写入方式打开,将文件指针指向文件开头并将文件大小截为零。如果文件不存在则尝试创建。
"w+" 读写方式打开,将文件指针指向文件开头并将文件大小截为零。如果文件不存在则尝试创建。
"a" 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建。
"a+" 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建。
如果成功打开文件,fopen函数的返回值是一个文件指针,如果出错,返回 FALSE。
示例:
 

代码示例:
<?php
$fp

= fopen("test.txt", "r");
?>

2.fclose(关闭文件)
语法:

fclose(filepointer)
filepointer,要关闭的文件指针。如果成功,fclose 函数返回 TRUE,如果失败,fclose 函数返回 FALSE。
示例:
 

代码示例:
<?php
$fp = fopen("test.txt", "r");
fclose($fp);
?>

3.feof(检测是否已到达文件末尾)
语法:
feof(filepointer)
filepointer,要检测的文件指针,该指针必须指向成功打开没有关闭的文件。如果文件指针到了文件末尾或者出错时,feof函数返回 TRUE。
示例:
 

代码示例:
<?php
$fp = fopen("test.txt", "r");
while(! feof($fp))
{
echo fgets($fp). "<br />";
}
fclose($fp);
?>

4.fgets(从文件指针中读取一行)
语法:

fgets(filepointer)
filepointer,要读取的文件指针。如果成功,从文件中读取一行并返回字符串,如果失败,返回 FALSE。
示例:
 

代码示例:
<?php
$fp = fopen("test.txt", "r");
if($fp)
{
for($i=1;! feof($fp);$i++)
{
echo "行".$i." : ".fgets($fp). "<br />";
}
}
else
{
echo "打开文件失败";
}
fclose($fp);
?>

假设test.txt的内容为:
hello world
hello cnblogs
hello heihaozi
hello everyone

输出结果为:
行1 : hello world
行2 : hello cnblogs
行3 : hello heihaozi
行4 : hello everyone

5.fwrite(写入文件)
语法:
fwrite(filepointer,string)
filepointer,要写入的文件指针。string,要写入的字符串。如果成功,返回写入的字符数,如果失败,返回 FALSE。

示例:
 

代码示例:
<?php
$fp = fopen("test.txt", "w");//文件被清空后再写入
if($fp)
{
$count=0;
for($i=1;$i<=5;$i++)
{
$flag=fwrite($fp,"行".$i." : "."Hello World!\r\n");
if(!$flag)
{
echo "写入文件失败<br>";
break;
}
$count+=$flag;
}
echo "共写入".$count."个字符";
}
else
{
echo "打开文件失败";
}
fclose($fp);
?>

输出结果为:
共写入100个字符

test.txt文件中被写入如下的内容:
 

行1 : Hello World!
行2 : Hello World!
行3 : Hello World!
行4 : Hello World!
行5 : Hello World!
 

  
说明:在以上的介绍中,为了简化操作,部分函数的可选参数没有列出。


    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3