• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

索引自定义函数

php 搞代码 4年前 (2022-01-24) 41次浏览 已收录 0个评论

目录自定义函数

PHP中并不提供查询目录大小、复制目录、删除有文件的目录的函数,我们需要自己编写

这个函数只要传递一个url,就能递归查询目录中的文件大小,从而统计本文来源gaodai#ma#com搞@@代~&码*网/搞gaodaima代码出目录大小

<span style="color: #008080"> 1</span> <?<span style="color: #000000">php</span><span style="color: #008080"> 2</span>     <span style="color: #0000ff">function</span> dirSize(<span style="color: #800080">$dir</span><span style="color: #000000">){</span><span style="color: #008080"> 3</span>         <span style="color: #800080">$dirsize</span> = 0<span style="color: #000000">;</span><span style="color: #008080"> 4</span>         <span style="color: #800080">$url</span> = <span style="color: #008080">opendir</span>(<span style="color: #800080">$dir</span><span style="color: #000000">);</span><span style="color: #008080"> 5</span>         <span style="color: #0000ff">while</span>(<span style="color: #800080">$filename</span> = <span style="color: #008080">readdir</span>(<span style="color: #800080">$url</span><span style="color: #000000">)){</span><span style="color: #008080"> 6</span>             <span style="color: #800080">$file</span> = <span style="color: #800080">$dir</span>.'/'.<span style="color: #800080">$filename</span><span style="color: #000000">;</span><span style="color: #008080"> 7</span>             <span style="color: #0000ff">if</span>(!(<span style="color: #800080">$filename</span>=='.' || <span style="color: #800080">$filename</span>=='..'<span style="color: #000000">)){</span><span style="color: #008080"> 8</span>                 <span style="color: #0000ff">if</span>(<span style="color: #008080">is_dir</span>(<span style="color: #800080">$file</span><span style="color: #000000">)){</span><span style="color: #008080"> 9</span>                     <span style="color: #800080">$dirsize</span> += dirSize(<span style="color: #800080">$file</span><span style="color: #000000">);</span><span style="color: #008080">10</span>                 }<span style="color: #0000ff">else</span><span style="color: #000000">{</span><span style="color: #008080">11</span>                     <span style="color: #800080">$dirsize</span> += <span style="color: #008080">filesize</span>(<span style="color: #800080">$file</span><span style="color: #000000">);</span><span style="color: #008080">12</span> <span style="color: #000000">                }</span><span style="color: #008080">13</span> <span style="color: #000000">            }</span><span style="color: #008080">14</span> <span style="color: #000000">        }</span><span style="color: #008080">15</span>         <span style="color: #008080">closedir</span>(<span style="color: #800080">$url</span><span style="color: #000000">);</span><span style="color: #008080">16</span>         <span style="color: #0000ff">return</span> <span style="color: #800080">$dirsize</span><span style="color: #000000">;</span><span style="color: #008080">17</span>     }

这个函数需要传递两个url,分别是旧目录和新目录,就能复制该目录及文件

<span style="color: #008080"> 1</span> <?<span style="color: #000000">php</span><span style="color: #008080"> 2</span>     <span style="color: #0000ff">function</span> copyDir(<span style="color: #800080">$dirSrc</span>,<span style="color: #800080">$dirTo</span><span style="color: #000000">){</span><span style="color: #008080"> 3</span>         <span style="color: #0000ff">if</span>(<span style="color: #008080">is_file</span>(<span style="color: #800080">$dirTo</span><span style="color: #000000">))</span><span style="color: #008080"> 4</span> <span style="color: #000000">        {</span><span style="color: #008080"> 5</span>             <span style="color: #0000ff">echo</span> '目标不是目录不能创建!'<span style="color: #000000">;</span><span style="color: #008080"> 6</span>             <span style="color: #0000ff">return</span><span style="color: #000000">;</span><span style="color: #008080"> 7</span> <span style="color: #000000">        }</span><span style="color: #008080"> 8</span>         <span style="color: #0000ff">if</span>(!<span style="color: #008080">file_exists</span>(<span style="color: #800080">$dirTo</span><span style="color: #000000">))</span><span style="color: #008080"> 9</span> <span style="color: #000000">        {</span><span style="color: #008080">10</span>             <span style="color: #008080">mkdir</span>(<span style="color: #800080">$dirTo</span><span style="color: #000000">);</span><span style="color: #008080">11</span> <span style="color: #000000">        }</span><span style="color: #008080">12</span>         <span style="color: #800080">$dir_handle</span> = @<span style="color: #008080">opendir</span>(<span style="color: #800080">$dirSrc</span><span style="color: #000000">);</span><span style="color: #008080">13</span>         <span style="color: #0000ff">if</span>(<span style="color: #800080">$dir_handle</span><span style="color: #000000">)</span><span style="color: #008080">14</span> <span style="color: #000000">        {</span><span style="color: #008080">15</span>             <span style="color: #0000ff">while</span>(<span style="color: #800080">$filename</span> = <span style="color: #008080">readdir</span>(<span style="color: #800080">$dir_handle</span><span style="color: #000000">))</span><span style="color: #008080">16</span> <span style="color: #000000">            {</span><span style="color: #008080">17</span>                 <span style="color: #0000ff">if</span>(<span style="color: #800080">$filename</span>!="." && <span style="color: #800080">$filename</span>!=".."<span style="color: #000000">)</span><span style="color: #008080">18</span> <span style="color: #000000">                {</span><span style="color: #008080">19</span>                     <span style="color: #800080">$subSrcFile</span> = <span style="color: #800080">$dirSrc</span> . "\\".<span style="color: #800080">$filename</span><span style="color: #000000">;</span><span style="color: #008080">20</span>                     <span style="color: #800080">$subToFile</span> = <span style="color: #800080">$dirTo</span> . "\\".<span style="color: #800080">$filename</span><span style="color: #000000">;</span><span style="color: #008080">21</span>                      <span style="color: #008080">22</span>                      <span style="color: #0000ff">if</span>(<span style="color: #008080">is_dir</span>(<span style="color: #800080">$subSrcFile</span><span style="color: #000000">))</span><span style="color: #008080">23</span> <span style="color: #000000">                     {</span><span style="color: #008080">24</span>                          copyDir(<span style="color: #800080">$subSrcFile</span>, <span style="color: #800080">$subToFile</span><span style="color: #000000">);</span><span style="color: #008080">25</span> <span style="color: #000000">                     }</span><span style="color: #008080">26</span>                      <span style="color: #0000ff">if</span>(<span style="color: #008080">is_file</span>(<span style="color: #800080">$subSrcFile</span><span style="color: #000000">))</span><span style="color: #008080">27</span> <span style="color: #000000">                     {</span><span style="color: #008080">28</span>                           <span style="color: #008080">copy</span>(<span style="color: #800080">$subSrcFile</span>, <span style="color: #800080">$subToFile</span><span style="color: #000000">);</span><span style="color: #008080">29</span> <span style="color: #000000">                     }</span><span style="color: #008080">30</span> <span style="color: #000000">                }</span><span style="color: #008080">31</span> <span style="color: #000000">            }</span><span style="color: #008080">32</span>             <span style="color: #008080">closedir</span>(<span style="color: #800080">$dir_handle</span><span style="color: #000000">);</span><span style="color: #008080">33</span> <span style="color: #000000">        }</span><span style="color: #008080">34</span>     }

这个函数只要传递一个url,就能递归删除目录及子目录的文件,从而删除目录

<span style="color: #008080"> 1</span> <?<span style="color: #000000">php</span><span style="color: #008080"> 2</span> <span style="color: #0000ff">function</span> rmDirAll(<span style="color: #800080">$url</span><span style="color: #000000">){</span><span style="color: #008080"> 3</span>     <span style="color: #008000">//</span><span style="color: #008000">检测要打开目录是否存在</span><span style="color: #008080"> 4</span>     <span style="color: #0000ff">if</span>(!<span style="color: #800080">$dir</span>=@<span style="color: #008080">opendir</span>(<span style="color: #800080">$url</span><span style="color: #000000">)){</span><span style="color: #008080"> 5</span>         <span style="color: #0000ff">return</span> <span style="color: #0000ff">false</span><span style="color: #000000">;</span><span style="color: #008080"> 6</span> <span style="color: #000000">    }</span><span style="color: #008080"> 7</span>     <span style="color: #0000ff">while</span>(<span style="color: #0000ff">false</span> !==(<span style="color: #800080">$file</span>=<span style="color: #008080">readdir</span>(<span style="color: #800080">$dir</span><span style="color: #000000">))){</span><span style="color: #008080"> 8</span>     <span style="color: #008000">//</span><span style="color: #008000">排除当前目录与父级目录</span><span style="color: #008080"> 9</span>         <span style="color: #0000ff">if</span>(<span style="color: #800080">$file</span>!=="."&&<span style="color: #800080">$file</span>!==".."<span style="color: #000000">){</span><span style="color: #008080">10</span>             <span style="color: #800080">$file</span>=<span style="color: #800080">$url</span> .'/'. <span style="color: #800080">$file</span><span style="color: #000000">;</span><span style="color: #008080">11</span>             <span style="color: #008000">//</span><span style="color: #008000">递归删除目录</span><span style="color: #008080">12</span>             <span style="color: #0000ff">if</span>(<span style="color: #008080">is_dir</span>(<span style="color: #800080">$file</span><span style="color: #000000">)){</span><span style="color: #008080">13</span>                 rmDirAll(<span style="color: #800080">$file</span><span style="color: #000000">);</span><span style="color: #008080">14</span>             }<span style="color: #0000ff">else</span><span style="color: #000000">{</span><span style="color: #008080">15</span>                 <span style="color: #0000ff">if</span>(@<span style="color: #008080">unlink</span>(<span style="color: #800080">$file</span><span style="color: #000000">)){</span><span style="color: #008080">16</span>                     <span style="color: #0000ff">continue</span><span style="color: #000000">;</span><span style="color: #008080">17</span>                 }<span style="color: #0000ff">else</span><span style="color: #000000">{</span><span style="color: #008080">18</span>                     <span style="color: #0000ff">return</span> <span style="color: #0000ff">false</span><span style="color: #000000">;</span><span style="color: #008080">19</span> <span style="color: #000000">                }</span><span style="color: #008080">20</span> <span style="color: #000000">            }</span><span style="color: #008080">21</span> <span style="color: #000000">        }</span><span style="color: #008080">22</span>         <span style="color: #0000ff">if</span>(@<span style="color: #008080">rmdir</span>(<span style="color: #800080">$url</span><span style="color: #000000">)){</span><span style="color: #008080">23</span>            <span style="color: #0000ff">return</span> <span style="color: #0000ff">true</span><span style="color: #000000">;</span><span style="color: #008080">24</span>         }<span style="color: #0000ff">else</span><span style="color: #000000">{</span><span style="color: #008080">25</span>            <span style="color: #0000ff">return</span> <span style="color: #0000ff">false</span><span style="color: #000000">;</span><span style="color: #008080">26</span> <span style="color: #000000">        }</span><span style="color: #008080">27</span> <span style="color: #000000">    }</span><span style="color: #008080">28</span> }


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:索引自定义函数
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址