<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>php培训</title>
	<atom:link href="http://www.phper.cc/feed" rel="self" type="application/rss+xml" />
	<link>http://www.phper.cc</link>
	<description>新程php培训--就业率100%的php培训中心 全国免费咨询热线 400-668-8834 了解更多，请访问 http://www.phppx.com</description>
	<lastBuildDate>Wed, 22 Sep 2010 13:00:06 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>echo()  print()  print_r() 的区别是什么？</title>
		<link>http://www.phper.cc/archives/108</link>
		<comments>http://www.phper.cc/archives/108#comments</comments>
		<pubDate>Wed, 22 Sep 2010 12:53:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP面试题讲解]]></category>

		<guid isPermaLink="false">http://www.phper.cc/?p=108</guid>
		<description><![CDATA[又是一道经典的面试题
echo print不是真正的函数，而是PHP语言结构
print_r可以打印出复杂类型变量的值(如数组,对象)
echo的执行效率最高。
echo 可以输出用”，”分割的多个字符串,print不行。
]]></description>
			<content:encoded><![CDATA[<p>又是一道经典的面试题</p>
<p>echo print不是真正的函数，而是PHP语言结构</p>
<p>print_r可以打印出复杂类型变量的值(如数组,对象)</p>
<p>echo的执行效率最高。</p>
<p>echo 可以输出用”，”分割的多个字符串,print不行。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phper.cc/archives/108/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>一个数组Array(2,45,10,257),请您写出一个函数，返回数组Array(2,4,5,1,0,2,5,7)</title>
		<link>http://www.phper.cc/archives/106</link>
		<comments>http://www.phper.cc/archives/106#comments</comments>
		<pubDate>Sun, 19 Sep 2010 06:43:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP面试题讲解]]></category>

		<guid isPermaLink="false">http://www.phper.cc/?p=106</guid>
		<description><![CDATA[本题比较简单，实现方法也很多。
&#60;?php
function Arrayfun($arr) {
 $str = implode(&#8221;,$arr); //把数组组成一个字符串
 $tempArr =  array();
 for ($i=0;$i&#60;strlen($str);$i++) {
  $tempArr[] = $str[$i];
 }
 return $tempArr;
}
print_r(Arrayfun(Array(2,45,10,257)));
/**
输出
Array
(
    [0] =&#62; 2
    [1] =&#62; 4
    [2] =&#62; 5
    [3] =&#62; 1
    [4] =&#62; 0
    [5] =&#62; 2
    [6] =&#62; 5
    [7] =&#62; 7
)
*/
?&#62;
print_r(Arrayfun(Array(2,45,10,257)));
]]></description>
			<content:encoded><![CDATA[<p>本题比较简单，实现方法也很多。</p>
<p>&lt;?php<br />
function Arrayfun($arr) {<br />
 $str = implode(&#8221;,$arr); //把数组组成一个字符串<br />
 $tempArr =  array();<br />
 for ($i=0;$i&lt;strlen($str);$i++) {<br />
  $tempArr[] = $str[$i];<br />
 }<br />
 return $tempArr;<br />
}</p>
<p>print_r(Arrayfun(Array(2,45,10,257)));</p>
<p>/**</p>
<p>输出<br />
Array<br />
(<br />
    [0] =&gt; 2<br />
    [1] =&gt; 4<br />
    [2] =&gt; 5<br />
    [3] =&gt; 1<br />
    [4] =&gt; 0<br />
    [5] =&gt; 2<br />
    [6] =&gt; 5<br />
    [7] =&gt; 7<br />
)</p>
<p>*/</p>
<p>?&gt;<br />
print_r(Arrayfun(Array(2,45,10,257)));</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phper.cc/archives/106/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>函数输出结果，关于引用赋值的参数</title>
		<link>http://www.phper.cc/archives/102</link>
		<comments>http://www.phper.cc/archives/102#comments</comments>
		<pubDate>Sun, 19 Sep 2010 06:01:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP面试题讲解]]></category>

		<guid isPermaLink="false">http://www.phper.cc/?p=102</guid>
		<description><![CDATA[$str = 0;
function fun(&#38;$str){
  return $str;
}
echo fun($str+1);  
分析：本题其实不会输出任何结果，只是产生一个致命的错误。对于fun的参数是一个引用传递的变量，所以参数只能是变量。
同理，用实数做参数也会产生类似的错误。例如  fun(1);
]]></description>
			<content:encoded><![CDATA[<p>$str = 0;<br />
function fun(&amp;$str){<br />
  return $str;<br />
}</p>
<p>echo fun($str+1);  </p>
<p>分析：本题其实不会输出任何结果，只是产生一个致命的错误。对于fun的参数是一个引用传递的变量，所以参数只能是变量。</p>
<p>同理，用实数做参数也会产生类似的错误。例如  fun(1);</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phper.cc/archives/102/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>如何判断字符串$a是否在字符串$b中出现？</title>
		<link>http://www.phper.cc/archives/96</link>
		<comments>http://www.phper.cc/archives/96#comments</comments>
		<pubDate>Sat, 04 Sep 2010 07:30:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[php技术]]></category>

		<guid isPermaLink="false">http://www.phper.cc/?p=96</guid>
		<description><![CDATA[&#60;?php
//这个比较简单，考察的是对strpos掌握情况
//一定要用===,因为strpos可能会返回0
$a = &#8216;http://www.phppx.com&#8217;;
$b = &#8216;h&#8217;;
if (strpos($a,$b,0) === false) {
 echo &#8216;没有&#8217;;
} else {
 echo &#8216;有&#8217;;
}
?&#62;
]]></description>
			<content:encoded><![CDATA[<p>&lt;?php</p>
<p>//这个比较简单，考察的是对strpos掌握情况<br />
//一定要用===,因为strpos可能会返回0<br />
$a = &#8216;http://www.phppx.com&#8217;;<br />
$b = &#8216;h&#8217;;<br />
if (strpos($a,$b,0) === false) {<br />
 echo &#8216;没有&#8217;;<br />
} else {<br />
 echo &#8216;有&#8217;;<br />
}</p>
<p>?&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phper.cc/archives/96/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>div+css布局，阿里巴巴笔试题，注意：只允许使用3个div</title>
		<link>http://www.phper.cc/archives/93</link>
		<comments>http://www.phper.cc/archives/93#comments</comments>
		<pubDate>Sat, 04 Sep 2010 07:21:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP面试题讲解]]></category>

		<guid isPermaLink="false">http://www.phper.cc/?p=93</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.phper.cc/wp-content/uploads/2010/09/clip_image002.jpg"><img class="alignnone size-medium wp-image-94" title="div+css布局" src="http://www.phper.cc/wp-content/uploads/2010/09/clip_image002-275x300.jpg" alt="" width="275" height="300" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.phper.cc/archives/93/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>用PHP写一段代码，实现不使用第3个变量，交换$a、$b的值。</title>
		<link>http://www.phper.cc/archives/90</link>
		<comments>http://www.phper.cc/archives/90#comments</comments>
		<pubDate>Sat, 04 Sep 2010 07:12:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP面试题讲解]]></category>

		<guid isPermaLink="false">http://www.phper.cc/?p=90</guid>
		<description><![CDATA[&#60;?php
//方法1，截取字符串
$a = &#8216;http://www.phppx.com&#8217;;
$b = &#8216;新程PHP培训&#8217;;
$a=$a.$b;
echo $b=substr($a,0,-1*strlen($b));
echo $a=substr($a,strlen($b));
//方法2,利用数组
$a = &#8216;http://www.phppx.com&#8217;;
$b = &#8216;新程PHP培训&#8217;;
$a = array($a,$b);
echo $b = $a[0];
echo $a= $a[1];
?&#62;
]]></description>
			<content:encoded><![CDATA[<p>&lt;?php<br />
//方法1，截取字符串</p>
<p>$a = &#8216;http://www.phppx.com&#8217;;<br />
$b = &#8216;新程PHP培训&#8217;;<br />
$a=$a.$b;<br />
echo $b=substr($a,0,-1*strlen($b));<br />
echo $a=substr($a,strlen($b));</p>
<p>//方法2,利用数组<br />
$a = &#8216;http://www.phppx.com&#8217;;<br />
$b = &#8216;新程PHP培训&#8217;;<br />
$a = array($a,$b);<br />
echo $b = $a[0];<br />
echo $a= $a[1];</p>
<p>?&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phper.cc/archives/90/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>新程php培训，可免费试听5天，不收任何费用！</title>
		<link>http://www.phper.cc/archives/88</link>
		<comments>http://www.phper.cc/archives/88#comments</comments>
		<pubDate>Wed, 01 Sep 2010 10:04:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[php培训]]></category>

		<guid isPermaLink="false">http://www.phper.cc/?p=88</guid>
		<description><![CDATA[   考虑到有些同学不太清楚自己是不是适合学习php，同时也为了打消各位同学的顾虑，新程PHP培训决定把免费试听的时间从2天提高到5天，完全免费，不收取任何费用。
   很多“所谓知名培训”只能试听半天时间，这说明什么，他们对教学时不自信的。我们之所以这样做，源于我们对教学的自信，以及“一切为就业服务”的态度。
    新程PHP培训将一如既往，竭尽全力为各位同学服务。
]]></description>
			<content:encoded><![CDATA[<p>   考虑到有些同学不太清楚自己是不是适合学习php，同时也为了打消各位同学的顾虑，新程PHP培训决定把免费试听的时间从2天提高到5天，完全免费，不收取任何费用。<br />
   很多“所谓知名培训”只能试听半天时间，这说明什么，他们对教学时不自信的。我们之所以这样做，源于我们对教学的自信，以及“一切为就业服务”的态度。<br />
    新程PHP培训将一如既往，竭尽全力为各位同学服务。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phper.cc/archives/88/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>新程php培训就业班第五期全部8名同学已在1个月内100%就业</title>
		<link>http://www.phper.cc/archives/84</link>
		<comments>http://www.phper.cc/archives/84#comments</comments>
		<pubDate>Wed, 01 Sep 2010 09:54:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[学员就业]]></category>

		<guid isPermaLink="false">http://www.phper.cc/archives/84</guid>
		<description><![CDATA[经过三个月的紧张而有序的学习，新程PHP培训就业班第六期全部8名同学在一个月内已经100%就业。
之所以能够100%就业，最重要3个因素是：

·具有多年开发经验的老师认真负责的做好教学工作；
·非常全面、合理的lamp课程体系，课程内容即是以后工作内容；
·各位同学自身的不懈努力；

新程成立2年多以来，严格恪守“好好做教学，好好做就业”的宗旨，用铁一样事实一次次证明，新程PHP培训从来没有食言过，是真正对得起学员每一分学费的。
下面是8位同学的工作照。（注：我们绝不拿入学照，或者生活照当工作照，那样完全没有可信度）。以下所有同学QQ，手机联系方式都有，但是考虑到个人隐私，这里不方便公开。如想跟其中某位同学聊聊，请加QQ543850577（毛老师）  或者 QQ群100498385。（以下同学都在群里）



胡佳就业于：天啸融通（北京）科技有限公司
李金霞就业于：马可波罗网


祝清就业于：宏合窗景科技有限公司
李想就业于：无限新空信息技术有限公司


马曙光就业于：北京芙德中天科贸有限公司
金建丞就业于：国际教育科技有限公司


张鹏飞就业于：乐你游旅行网
王方超就业于：北京百德诚医疗科技有限公司




]]></description>
			<content:encoded><![CDATA[<p>经过三个月的紧张而有序的学习，新程PHP培训就业班第六期全部8名同学在一个月内已经100%就业。</p>
<p>之所以能够100%就业，最重要3个因素是：</p>
<ul style="padding-top: 0px;">
<li>·具有多年开发经验的老师认真负责的做好教学工作；</li>
<li>·非常全面、合理的lamp课程体系，课程内容即是以后工作内容；</li>
<li>·各位同学自身的不懈努力；</li>
</ul>
<p>新程成立2年多以来，严格恪守“好好做教学，好好做就业”的宗旨，用铁一样事实一次次证明，新程PHP培训从来没有食言过，是真正对得起学员每一分学费的。</p>
<p>下面是8位同学的工作照。（注：我们绝不拿入学照，或者生活照当工作照，那样完全没有可信度）。以下所有同学QQ，手机联系方式都有，但是考虑到个人隐私，这里不方便公开。如想跟其中某位同学聊聊，请加QQ543850577（毛老师） <a onclick="var tempSrc='http://sighttp.qq.com/wpa.js?rantime='+Math.random()+'&amp;sigkey=81a37f0b7cac68639bddfdb9b93a6c92bc211f3e3a4e683afbb31a079382dc9d';var oldscript=document.getElementById('testJs');var newscript=document.createElement('script');newscript.setAttribute('type','text/javascript'); newscript.setAttribute('id', 'testJs');newscript.setAttribute('src',tempSrc);if(oldscript == null){document.body.appendChild(newscript);}else{oldscript.parentNode.replaceChild(newscript, oldscript);}return false;" href="http://sighttp.qq.com/cgi-bin/check?sigkey=81a37f0b7cac68639bddfdb9b93a6c92bc211f3e3a4e683afbb31a079382dc9d" target="_blank;"><img src="http://wpa.qq.com/pa?p=1:543850577:1" border="0" alt="点击这里给我发消息" /></a> 或者 QQ群100498385。（以下同学都在群里）</p>
<table id="tab" style="height: 438px;" border="0" cellspacing="0" cellpadding="0" width="650">
<tbody>
<tr align="center">
<td width="280"><img src="http://www.phppx.com/uploadfile/5/hujia_middle.jpg" alt="" width="224" height="288" />胡佳就业于：天啸融通（北京）科技有限公司</td>
<td width="360"><img src="http://www.phppx.com/uploadfile/5/lijinxia_middle.jpg" alt="" width="288" height="224" />李金霞就业于：马可波罗网</td>
</tr>
<tr align="center">
<td><img src="http://www.phppx.com/uploadfile/5/zhuqing_middle.jpg" alt="" width="224" height="288" />祝清就业于：宏合窗景科技有限公司</td>
<td><img src="http://www.phppx.com/uploadfile/5/lixiang_middle.jpg" alt="" width="288" height="244" />李想就业于：无限新空信息技术有限公司</td>
</tr>
<tr align="center">
<td><img src="http://www.phppx.com/uploadfile/5/mashuguang_middle.jpg" alt="" width="288" height="224" />马曙光就业于：北京芙德中天科贸有限公司</td>
<td><img src="http://www.phppx.com/uploadfile/5/jinjiancheng_middle.jpg" alt="" width="288" height="224" />金建丞就业于：国际教育科技有限公司</td>
</tr>
<tr align="center">
<td><img src="http://www.phppx.com/uploadfile/5/zhangpengfei_middle.jpg" alt="" width="224" height="288" />张鹏飞就业于：乐你游旅行网</td>
<td><img src="http://www.phppx.com/uploadfile/5/wangfangchao_middle.jpg" alt="" width="288" height="210" />王方超就业于：北京百德诚医疗科技有限公司</td>
</tr>
</tbody>
</table>
<p><!--<br />
table{ border-collapse:collapse; }<br />
#tab td{ border:#ccc solid 1px; padding:5px; }<br />
#tab td{font-size:14px;font-weight:bold;} --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.phper.cc/archives/84/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>一个不依靠ZLib模块可以创建、操作 ZIP 文件的PHP类</title>
		<link>http://www.phper.cc/archives/81</link>
		<comments>http://www.phper.cc/archives/81#comments</comments>
		<pubDate>Thu, 08 Apr 2010 15:47:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[php技术]]></category>

		<guid isPermaLink="false">http://www.phper.cc/?p=81</guid>
		<description><![CDATA[这个类的所有操作不需要 zLib 模块的支持，有的时候可能会用到这个类。
&#60;?
/**
* @copyright 互联网
* @author bouchon
* 整理：www.phppx.com
* @desc 建立、操作、控制 ZIP 文件的类
*/
class zip
{
        var $datasec, $ctrl_dir = array();
        var $eof_ctrl_dir = &#8220;\x50\x4b\x05\x06\x00\x00\x00\x00&#8243;;
        var $old_offset = 0; var $dirs = Array(&#8220;.&#8221;);
        function get_List($zip_name)
        {
                $zip = @fopen($zip_name, &#8216;rb&#8217;);
                if(!$zip) return(0);
                $centd = $this-&#62;ReadCentralDir($zip,$zip_name);
                @rewind($zip);
                @fseek($zip, $centd['offset']);
                for ($i=0; $i&#60;$centd['entries']; $i++)
                {
                        $header = $this-&#62;ReadCentralFileHeaders($zip);
                        $header['index'] = [...]]]></description>
			<content:encoded><![CDATA[<p>这个类的所有操作不需要 zLib 模块的支持，有的时候可能会用到这个类。</p>
<p>&lt;?<br />
/**<br />
* @copyright 互联网<br />
* @author bouchon<br />
* 整理：<a href="http://www.phppx.com/">www.phppx.com</a><br />
* @desc 建立、操作、控制 ZIP 文件的类<br />
*/</p>
<p>class zip<br />
{<br />
        var $datasec, $ctrl_dir = array();<br />
        var $eof_ctrl_dir = &#8220;\x50\x4b\x05\x06\x00\x00\x00\x00&#8243;;<br />
        var $old_offset = 0; var $dirs = Array(&#8220;.&#8221;);</p>
<p>        function get_List($zip_name)<br />
        {<br />
                $zip = @fopen($zip_name, &#8216;rb&#8217;);<br />
                if(!$zip) return(0);<br />
                $centd = $this-&gt;ReadCentralDir($zip,$zip_name);</p>
<p>                @rewind($zip);<br />
                @fseek($zip, $centd['offset']);</p>
<p>                for ($i=0; $i&lt;$centd['entries']; $i++)<br />
                {<br />
                        $header = $this-&gt;ReadCentralFileHeaders($zip);<br />
                        $header['index'] = $i;$info['filename'] = $header['filename'];<br />
                        $info['stored_filename'] = $header['stored_filename'];<br />
                        $info['size'] = $header['size'];$info['compressed_size']=$header['compressed_size'];<br />
                        $info['crc'] = strtoupper(dechex( $header['crc'] ));<br />
                        $info['mtime'] = $header['mtime']; $info['comment'] = $header['comment'];<br />
                        $info['folder'] = ($header['external']==0&#215;41FF0010||$header['external']==16)?1:0;<br />
                        $info['index'] = $header['index'];$info['status'] = $header['status'];<br />
                        $ret[]=$info; unset($header);<br />
                }<br />
                return $ret;<br />
        }</p>
<p>        function Add($files,$compact)<br />
        {<br />
                if(!is_array($files[0])) $files=Array($files);</p>
<p>                for($i=0;$files[$i];$i++){<br />
                        $fn = $files[$i];<br />
                        if(!in_Array(dirname($fn[0]),$this-&gt;dirs))<br />
                        $this-&gt;add_Dir(dirname($fn[0]));<br />
                        if(basename($fn[0]))<br />
                        $ret[basename($fn[0])]=$this-&gt;add_File($fn[1],$fn[0],$compact);<br />
                }<br />
                return $ret;<br />
        }</p>
<p>        function get_file()<br />
        {<br />
                $data = implode(&#8221;, $this -&gt; datasec);<br />
                $ctrldir = implode(&#8221;, $this -&gt; ctrl_dir);</p>
<p>                return $data . $ctrldir . $this -&gt; eof_ctrl_dir .<br />
                pack(&#8216;v&#8217;, sizeof($this -&gt; ctrl_dir)).pack(&#8216;v&#8217;, sizeof($this -&gt; ctrl_dir)).<br />
                pack(&#8216;V&#8217;, strlen($ctrldir)) . pack(&#8216;V&#8217;, strlen($data)) . &#8220;\x00\x00&#8243;;<br />
        }</p>
<p>        function add_dir($name)<br />
        {<br />
                $name = str_replace(&#8220;\\&#8221;, &#8220;/&#8221;, $name);<br />
                $fr = &#8220;\x50\x4b\x03\x04\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00&#8243;;</p>
<p>                $fr .= pack(&#8220;V&#8221;,0).pack(&#8220;V&#8221;,0).pack(&#8220;V&#8221;,0).pack(&#8220;v&#8221;, strlen($name) );<br />
                $fr .= pack(&#8220;v&#8221;, 0 ).$name.pack(&#8220;V&#8221;, 0).pack(&#8220;V&#8221;, 0).pack(&#8220;V&#8221;, 0);<br />
                $this -&gt; datasec[] = $fr;</p>
<p>                $new_offset = strlen(implode(&#8220;&#8221;, $this-&gt;datasec));</p>
<p>                $cdrec = &#8220;\x50\x4b\x01\x02\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00&#8243;;<br />
                $cdrec .= pack(&#8220;V&#8221;,0).pack(&#8220;V&#8221;,0).pack(&#8220;V&#8221;,0).pack(&#8220;v&#8221;, strlen($name) );<br />
                $cdrec .= pack(&#8220;v&#8221;, 0 ).pack(&#8220;v&#8221;, 0 ).pack(&#8220;v&#8221;, 0 ).pack(&#8220;v&#8221;, 0 );<br />
                $ext = &#8220;\xff\xff\xff\xff&#8221;;<br />
                $cdrec .= pack(&#8220;V&#8221;, 16 ).pack(&#8220;V&#8221;, $this -&gt; old_offset ).$name;</p>
<p>                $this -&gt; ctrl_dir[] = $cdrec;<br />
                $this -&gt; old_offset = $new_offset;<br />
                $this -&gt; dirs[] = $name;<br />
        }</p>
<p>        function add_File($data, $name, $compact = 1)<br />
        {<br />
                $name     = str_replace(&#8216;\\&#8217;, &#8216;/&#8217;, $name);<br />
                $dtime    = dechex($this-&gt;DosTime());</p>
<p>                $hexdtime = &#8216;\x&#8217; . $dtime[6] . $dtime[7].&#8217;\x&#8217;.$dtime[4] . $dtime[5]<br />
                . &#8216;\x&#8217; . $dtime[2] . $dtime[3].&#8217;\x&#8217;.$dtime[0].$dtime[1];<br />
                eval(&#8216;$hexdtime = &#8220;&#8216; . $hexdtime . &#8216;&#8221;;&#8217;);</p>
<p>                if($compact)<br />
                $fr = &#8220;\x50\x4b\x03\x04\x14\x00\x00\x00\x08\x00&#8243;.$hexdtime;<br />
                else $fr = &#8220;\x50\x4b\x03\x04\x0a\x00\x00\x00\x00\x00&#8243;.$hexdtime;<br />
                $unc_len = strlen($data); $crc = crc32($data);</p>
<p>                if($compact){<br />
                        $zdata = gzcompress($data); $c_len = strlen($zdata);<br />
                        $zdata = substr(substr($zdata, 0, strlen($zdata) &#8211; 4), 2);<br />
                }else{<br />
                        $zdata = $data;<br />
                }<br />
                $c_len=strlen($zdata);<br />
                $fr .= pack(&#8216;V&#8217;, $crc).pack(&#8216;V&#8217;, $c_len).pack(&#8216;V&#8217;, $unc_len);<br />
                $fr .= pack(&#8216;v&#8217;, strlen($name)).pack(&#8216;v&#8217;, 0).$name.$zdata;</p>
<p>                $fr .= pack(&#8216;V&#8217;, $crc).pack(&#8216;V&#8217;, $c_len).pack(&#8216;V&#8217;, $unc_len);</p>
<p>                $this -&gt; datasec[] = $fr;<br />
                $new_offset        = strlen(implode(&#8221;, $this-&gt;datasec));<br />
                if($compact)<br />
                $cdrec = &#8220;\x50\x4b\x01\x02\x00\x00\x14\x00\x00\x00\x08\x00&#8243;;<br />
                else $cdrec = &#8220;\x50\x4b\x01\x02\x14\x00\x0a\x00\x00\x00\x00\x00&#8243;;<br />
                $cdrec .= $hexdtime.pack(&#8216;V&#8217;, $crc).pack(&#8216;V&#8217;, $c_len).pack(&#8216;V&#8217;, $unc_len);<br />
                $cdrec .= pack(&#8216;v&#8217;, strlen($name) ).pack(&#8216;v&#8217;, 0 ).pack(&#8216;v&#8217;, 0 );<br />
                $cdrec .= pack(&#8216;v&#8217;, 0 ).pack(&#8216;v&#8217;, 0 ).pack(&#8216;V&#8217;, 32 );<br />
                $cdrec .= pack(&#8216;V&#8217;, $this -&gt; old_offset );</p>
<p>                $this -&gt; old_offset = $new_offset;<br />
                $cdrec .= $name;<br />
                $this -&gt; ctrl_dir[] = $cdrec;<br />
                return true;<br />
        }</p>
<p>        function DosTime() {<br />
                $timearray = getdate();<br />
                if ($timearray['year'] &lt; 1980) {<br />
                        $timearray['year'] = 1980; $timearray['mon'] = 1;<br />
                        $timearray['mday'] = 1; $timearray['hours'] = 0;<br />
                        $timearray['minutes'] = 0; $timearray['seconds'] = 0;<br />
                }<br />
                return (($timearray['year'] &#8211; 1980) &lt;&lt; 25) | ($timearray['mon'] &lt;&lt; 21) |     ($timearray['mday'] &lt;&lt; 16) | ($timearray['hours'] &lt;&lt; 11) |<br />
                ($timearray['minutes'] &lt;&lt; 5) | ($timearray['seconds'] &gt;&gt; 1);<br />
        }</p>
<p>        function Extract ( $zn, $to, $index = Array(-1) )<br />
        {<br />
                $ok = 0; $zip = @fopen($zn,&#8217;rb&#8217;);<br />
                if(!$zip) return(-1);<br />
                $cdir = $this-&gt;ReadCentralDir($zip,$zn);<br />
                $pos_entry = $cdir['offset'];</p>
<p>                if(!is_array($index)){ $index = array($index);  }<br />
                for($i=0; $index[$i];$i++){<br />
                        if(intval($index[$i])!=$index[$i]||$index[$i]&gt;$cdir['entries'])<br />
                        return(-1);<br />
                }</p>
<p>                for ($i=0; $i&lt;$cdir['entries']; $i++)<br />
                {<br />
                        @fseek($zip, $pos_entry);<br />
                        $header = $this-&gt;ReadCentralFileHeaders($zip);<br />
                        $header['index'] = $i; $pos_entry = ftell($zip);<br />
                        @rewind($zip); fseek($zip, $header['offset']);<br />
                        if(in_array(&#8220;-1&#8243;,$index)||in_array($i,$index))<br />
                        $stat[$header['filename']]=$this-&gt;ExtractFile($header, $to, $zip);</p>
<p>                }<br />
                fclose($zip);<br />
                return $stat;<br />
        }</p>
<p>        function ReadFileHeader($zip)<br />
        {<br />
                $binary_data = fread($zip, 30);<br />
                $data = unpack(&#8216;vchk/vid/vversion/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len&#8217;, $binary_data);</p>
<p>                $header['filename'] = fread($zip, $data['filename_len']);<br />
                if ($data['extra_len'] != 0) {<br />
                        $header['extra'] = fread($zip, $data['extra_len']);<br />
                } else { $header['extra'] = &#8221;; }</p>
<p>                $header['compression'] = $data['compression'];$header['size'] = $data['size'];<br />
                $header['compressed_size'] = $data['compressed_size'];<br />
                $header['crc'] = $data['crc']; $header['flag'] = $data['flag'];<br />
                $header['mdate'] = $data['mdate'];$header['mtime'] = $data['mtime'];</p>
<p>                if ($header['mdate'] &amp;&amp; $header['mtime']){<br />
                        $hour=($header['mtime']&amp;0xF800)&gt;&gt;11;$minute=($header['mtime']&amp;0&#215;07E0)&gt;&gt;5;<br />
                        $seconde=($header['mtime']&amp;0&#215;001F)*2;$year=(($header['mdate']&amp;0xFE00)&gt;&gt;9)+1980;<br />
                        $month=($header['mdate']&amp;0&#215;01E0)&gt;&gt;5;$day=$header['mdate']&amp;0&#215;001F;<br />
                        $header['mtime'] = mktime($hour, $minute, $seconde, $month, $day, $year);<br />
                }else{$header['mtime'] = time();}</p>
<p>                $header['stored_filename'] = $header['filename'];<br />
                $header['status'] = &#8220;ok&#8221;;<br />
                return $header;<br />
        }</p>
<p>        function ReadCentralFileHeaders($zip){<br />
                $binary_data = fread($zip, 46);<br />
                $header = unpack(&#8216;vchkid/vid/vversion/vversion_extracted/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len/vcomment_len/vdisk/vinternal/Vexternal/Voffset&#8217;, $binary_data);</p>
<p>                if ($header['filename_len'] != 0)<br />
                $header['filename'] = fread($zip,$header['filename_len']);<br />
                else $header['filename'] = &#8221;;</p>
<p>                if ($header['extra_len'] != 0)<br />
                $header['extra'] = fread($zip, $header['extra_len']);<br />
                else $header['extra'] = &#8221;;</p>
<p>                if ($header['comment_len'] != 0)<br />
                $header['comment'] = fread($zip, $header['comment_len']);<br />
                else $header['comment'] = &#8221;;</p>
<p>                if ($header['mdate'] &amp;&amp; $header['mtime'])<br />
                {<br />
                        $hour = ($header['mtime'] &amp; 0xF800) &gt;&gt; 11;<br />
                        $minute = ($header['mtime'] &amp; 0&#215;07E0) &gt;&gt; 5;<br />
                        $seconde = ($header['mtime'] &amp; 0&#215;001F)*2;<br />
                        $year = (($header['mdate'] &amp; 0xFE00) &gt;&gt; 9) + 1980;<br />
                        $month = ($header['mdate'] &amp; 0&#215;01E0) &gt;&gt; 5;<br />
                        $day = $header['mdate'] &amp; 0&#215;001F;<br />
                        $header['mtime'] = mktime($hour, $minute, $seconde, $month, $day, $year);<br />
                } else {<br />
                        $header['mtime'] = time();<br />
                }<br />
                $header['stored_filename'] = $header['filename'];<br />
                $header['status'] = &#8216;ok&#8217;;<br />
                if (substr($header['filename'], -1) == &#8216;/&#8217;)<br />
                $header['external'] = 0&#215;41FF0010;<br />
                return $header;<br />
        }</p>
<p>        function ReadCentralDir($zip,$zip_name)<br />
        {<br />
                $size = filesize($zip_name);<br />
                if ($size &lt; 277) $maximum_size = $size;<br />
                else $maximum_size=277;</p>
<p>                @fseek($zip, $size-$maximum_size);<br />
                $pos = ftell($zip); $bytes = 0&#215;00000000;</p>
<p>                while ($pos &lt; $size)<br />
                {<br />
                        $byte = @fread($zip, 1); $bytes=($bytes &lt;&lt; <img src='http://www.phper.cc/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> | Ord($byte);<br />
                        if ($bytes == 0&#215;504b0506){ $pos++; break; } $pos++;<br />
                }</p>
<p>                $data=unpack(&#8216;vdisk/vdisk_start/vdisk_entries/ventries/Vsize/Voffset/vcomment_size&#8217;,<br />
                fread($zip, 18));</p>
<p>                if ($data['comment_size'] != 0)<br />
                $centd['comment'] = fread($zip, $data['comment_size']);<br />
                else $centd['comment'] = &#8221;; $centd['entries'] = $data['entries'];<br />
                $centd['disk_entries'] = $data['disk_entries'];<br />
                $centd['offset'] = $data['offset'];$centd['disk_start'] = $data['disk_start'];<br />
                $centd['size'] = $data['size'];  $centd['disk'] = $data['disk'];<br />
                return $centd;<br />
        }</p>
<p>        function ExtractFile($header,$to,$zip)<br />
        {<br />
                $header = $this-&gt;readfileheader($zip);</p>
<p>                if(substr($to,-1)!=&#8221;/&#8221;) $to.=&#8221;/&#8221;;<br />
                if(<a href="mailto:!@is_dir($to">!@is_dir($to</a>)) @mkdir($to,0777);</p>
<p>                $pth = explode(&#8220;/&#8221;,dirname($header['filename']));<br />
                for($i=0;isset($pth[$i]);$i++){<br />
                        if(!$pth[$i]) continue;<br />
                        if(!is_dir($to.$pth[$i])) @mkdir($to.$pth[$i],0777);<br />
                }<br />
                if (!($header['external']==0&#215;41FF0010)&amp;&amp;!($header['external']==16))<br />
                {<br />
                        if ($header['compression']==0)<br />
                        {<br />
                                $fp = @fopen($to.$header['filename'], &#8216;wb&#8217;);<br />
                                if(!$fp) return(-1);<br />
                                $size = $header['compressed_size'];</p>
<p>                                while ($size != 0)<br />
                                {<br />
                                        $read_size = ($size &lt; 2048 ? $size : 2048);<br />
                                        $buffer = fread($zip, $read_size);<br />
                                        $binary_data = pack(&#8216;a&#8217;.$read_size, $buffer);<br />
                                        @fwrite($fp, $binary_data, $read_size);<br />
                                        $size -= $read_size;<br />
                                }<br />
                                fclose($fp);<br />
                                touch($to.$header['filename'], $header['mtime']);</p>
<p>                        }else{<br />
                                $fp = @fopen($to.$header['filename'].&#8217;.gz&#8217;,'wb&#8217;);<br />
                                if(!$fp) return(-1);<br />
                                $binary_data = pack(&#8216;va1a1Va1a1&#8242;, 0&#215;8b1f, Chr($header['compression']),<br />
                                Chr(0&#215;00), time(), Chr(0&#215;00), Chr(3));</p>
<p>                                fwrite($fp, $binary_data, 10);<br />
                                $size = $header['compressed_size'];</p>
<p>                                while ($size != 0)<br />
                                {<br />
                                        $read_size = ($size &lt; 1024 ? $size : 1024);<br />
                                        $buffer = fread($zip, $read_size);<br />
                                        $binary_data = pack(&#8216;a&#8217;.$read_size, $buffer);<br />
                                        @fwrite($fp, $binary_data, $read_size);<br />
                                        $size -= $read_size;<br />
                                }</p>
<p>                                $binary_data = pack(&#8216;VV&#8217;, $header['crc'], $header['size']);<br />
                                fwrite($fp, $binary_data,8); fclose($fp);</p>
<p>                                $gzp = @gzopen($to.$header['filename'].&#8217;.gz&#8217;,'rb&#8217;) or die(&#8220;Cette archive est compress閑&#8221;);<br />
                                if(!$gzp) return(-2);<br />
                                $fp = @fopen($to.$header['filename'],&#8217;wb&#8217;);<br />
                                if(!$fp) return(-1);<br />
                                $size = $header['size'];</p>
<p>                                while ($size != 0)<br />
                                {<br />
                                        $read_size = ($size &lt; 2048 ? $size : 2048);<br />
                                        $buffer = gzread($gzp, $read_size);<br />
                                        $binary_data = pack(&#8216;a&#8217;.$read_size, $buffer);<br />
                                        @fwrite($fp, $binary_data, $read_size);<br />
                                        $size -= $read_size;<br />
                                }<br />
                                fclose($fp); gzclose($gzp);</p>
<p>                                touch($to.$header['filename'], $header['mtime']);<br />
                                @unlink($to.$header['filename'].&#8217;.gz&#8217;);</p>
<p>                        }}<br />
                        return true;<br />
        }<br />
}</p>
<p>?&gt;</p>
<p><span id="more-81"></span></p>
<p>实例：</p>
<p>&lt;?</p>
<p>require_once(&#8220;zip.lib.php&#8221;);<br />
set_time_limit(100);</p>
<p>if(!$arch || !file_exists($arch))<br />
die(&#8216;&lt;html&gt;&lt;body&gt;&lt;form action=&#8221;exemple.php&#8221;&gt;<br />
Entrez le chemin de l\&#8217;archive : &lt;input type=text name=arch&gt;&lt;br&gt;&lt;br&gt;&lt;input type=submit&gt;<br />
&lt;/form&gt;&lt;/body&gt;&lt;/html&gt;&#8217;);</p>
<p>$z = new Zip;<br />
$l=$z-&gt;get_list($arch);<br />
?&gt;<br />
&lt;html&gt;<br />
&lt;head&gt;&lt;title&gt;ZipExplorer | &lt;?=basename($arch)?&gt; &lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body bgcolor=&#8221;#333366&#8243;&gt;<br />
&lt;Table border=2 cellspadding=8 cellspacing=0 bgcolor=&#8221;#9999CC&#8221; align=center bordercolor=&#8221;#CCCCCC&#8221; width=&#8221;100%&#8221; height=&#8221;100%&#8221;&gt;<br />
&lt;tr&gt;&lt;td&gt;&lt;br&gt;<br />
&lt;h2 align=&#8221;center&#8221;&gt;Navigateur Zip&lt;/h2&gt;<br />
&lt;table align=&#8221;center&#8221; bgcolor=&#8221;#CCCCCC&#8221; cellspacing=0 cellpadding=3 border=2 bordercolor=&#8221;#000000&#8243; width=&#8221;97%&#8221;&gt;<br />
&lt;tr bgcolor=&#8221;#999999&#8243;&gt;&lt;td&gt;&lt;b&gt;Nom&lt;/b&gt;&lt;/td&gt;<br />
&lt;td width=&#8221;130&#8243;&gt;&lt;b&gt;Dossier&lt;/b&gt;&lt;/td&gt;&lt;td width=&#8221;120&#8243;&gt;&lt;b&gt;Taille&lt;/b&gt;&lt;/td&gt;&lt;td width=&#8221;120&#8243;&gt;&lt;b&gt;Comprs&lt;/b&gt;&lt;/td&gt;<br />
&lt;td width=&#8221;90&#8243;&gt;&lt;b&gt;Ratio&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;<br />
&lt;?<br />
for($k=0;isset($l[$k]);$k++){<br />
        $h=$l[$k];  $name=$h[stored_filename]; $isdir=$h[folder]; $id=$h[index]; $sub=&#8221;"; $mdir = dirname($name).&#8221;/&#8221;;<br />
        if(!$h[folder]){ $s=$h[size]; $cs=$h[compressed_size]; $un=&#8221;Bytes&#8221;; $uni=&#8221;Bytes&#8221;; $ext=strtolower(substr($name,-4));if($ext==&#8221;.gif&#8221;||$ext==&#8221;.jpg&#8221;||$ext==&#8221;.png&#8221;||$ext==&#8221;.bmp&#8221;){}<br />
        <a href="mailto:$ratio=@intval($cs/($s/100)+0,00001">$ratio=@intval($cs/($s/100)+0,00001</a>);<br />
        if($s&gt;1000){$s=substr($s/1000,0,5); $un=&#8221;Kb&#8221;; }if($s&gt;1000){$s=substr($s/1000,0,5); $un=&#8221;Mb&#8221;; }if($s&gt;1000){$s=substr($s/1000,0,5); $un=&#8221;Gb&#8221;; }<br />
if($cs&gt;1000){$cs=substr($cs/1000,0,5); $uni=&#8221;Kb&#8221;; }if($cs&gt;1000){$cs=substr($cs/1000,0,5); $uni=&#8221;Mb&#8221;; }if($cs&gt;1000){$cs=substr($cs/1000,0,5); $uni=&#8221;Gb&#8221;; } ?&gt;</p>
<p>&lt;tr&gt;&lt;td style=&#8221;padding-left:12px;&#8221;&gt;&lt;?=$name?&gt;&lt;/td&gt;&lt;td&gt;&lt;?=$sub?&gt;&lt;?=$mdir?&gt;&lt;/td&gt;&lt;td align=center&gt;&lt;?=$s?&gt; &lt;?=$un?&gt;&lt;/td&gt;&lt;td align=center&gt;&lt;?=$cs?&gt; &lt;?=$uni?&gt;&lt;/td&gt;<br />
&lt;td align=center&gt;&lt;?=$ratio?&gt; %&lt;/td&gt;&lt;/tr&gt;<br />
&lt;? }}if($k==0){ ?&gt;&lt;tr&gt;&lt;td colspan=&#8221;7&#8243; align=center&gt;&lt;b&gt;= Archive vide =&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;? } ?&gt;<br />
&lt;/table&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;<br />
&lt;/html&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phper.cc/archives/81/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>如果您对我们的培训感兴趣，欢迎您访问新程PHP培训主站</title>
		<link>http://www.phper.cc/archives/74</link>
		<comments>http://www.phper.cc/archives/74#comments</comments>
		<pubDate>Wed, 31 Mar 2010 11:53:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[php培训]]></category>

		<guid isPermaLink="false">http://www.phper.cc/?p=74</guid>
		<description><![CDATA[网址 ： http://www.phppx.com
免费咨询电话： 400-6688-834
 

]]></description>
			<content:encoded><![CDATA[<div><span style="font-size: 16px;"><strong>网址 ： </strong><a href="http://www.phppx.com"><strong>http://www.phppx.com</strong></a></span></div>
<div><span style="font-size: 16px;"><strong>免费咨询电话： 400-6688-834</strong></span></div>
<p><span style="font-size: 16px;"> </p>
<p></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.phper.cc/archives/74/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

