php读出目录下的所有目录及子目录下文件
代码如下 | 复制代码 |
<?php readdir($dirname)."<br>"; readdir($dirname)."<br>"; { } } ?> |
只能读出html文件名,读不出abc目录下的目录名,下面我们再看一实例
代码如下 | 复制代码 |
<?php |
第13课老师提供的分页函数,我进行了适当的修改,去掉了一些我不太好理解的地方。
只要你好好研究老师的函数,想必很容易就可以判断出我修改的地方。
如果你觉得我修改有什么不当的地方欢迎指证,交流可以促使你我进步!
-变量
1.局部变量
2.全局变量(global,$GLOBALS)
a.在函数外定义的局部变量,只可以在主程序使用,不可在函数内或其他文件使用
b.在函数内定义的局部变量,只可在本函数内使用
c.在函数外定义的局部变量,想要在函数内使用,必须在函数内将变量声明为global
d.在函数内定义的局部变量,想要在函数外使用,必须在函数内将变量声明为global
注意:
1.必须先将变量声明为global,然后才赋值
错误: global $color="red";
正确: global $color;$color="red";
2.必须先声明,再使用
错误:echo $color;global $color;
正确:global $color;echo $color;
f.函数的参数为局部变量,如果想要在外部使用,不能使用global这种方式(因为不符合先声明,再使用的原则)
则使用超全局变量 $GLOBALS(大写,小写有不确定性)
代码如下 | 复制代码 |
<?php //取得当前页的地址 $lastpg = ceil($totle / $displaypg); //最后页 //开始分页导航条代码: //如果只有一页则跳出函数: //下拉跳转列表,循环列出所有页码: $result=mysql_query("SELECT * FROM `news` limit $firstcount,$displaypg "); ?> |
删除url
代码如下 | 复制代码 |
$string = preg_replace('/b(https?|ftp|file)://[-A-Z0-9+&@#/%?=~_|$!:,.;]*[A-Z0-9+&@#/%=~_|$]/i', '', $string); |
将url转换成链接
代码如下 | 复制代码 |
$url = "Jean-Baptiste Jung (http://www.111cn.net)"; $url = preg_replace("#http://([A-z0-9./-]+)#", '<a href="http://www.111cn.net $1" style="font-size: 12px; vertical-align: baseline; background-color: transparent; margin: 0px; padding: 0px; color: #3777af; text-decoration: none; font-weight: bold">$0</a>', $url); |
代码如下 | 复制代码 |
<? /** * 操纵文件类 * * 例子: * FileUtil::createDir('a/1/2/3'); 测试建立文件夹 建一个a/1/2/3文件夹 * FileUtil::createFile('b/1/2/3'); 测试建立文件 在b/1/2/文件夹下面建一个3文件 * FileUtil::createFile('b/1/2/3.exe'); 测试建立文件 在b/1/2/文件夹下面建一个3.exe文件 * FileUtil::copyDir('b','d/e'); 测试复制文件夹 建立一个d/e文件夹,把b文件夹下的内容复制进去 * FileUtil::copyFile('b/1/2/3.exe','b/b/3.exe'); 测试复制文件 建立一个b/b文件夹,并把b/1/2文件夹中的3.exe文件复制进去 * FileUtil::moveDir('a/','b/c'); 测试移动文件夹 建立一个b/c文件夹,并把a文件夹下的内容移动进去,并删除a文件夹 * FileUtil::moveFile('b/1/2/3.exe','b/d/3.exe'); 测试移动文件 建立一个b/d文件夹,并把b/1/2中的3.exe移动进去 * FileUtil::unlinkFile('b/d/3.exe'); 测试删除文件 删除b/d/3.exe文件 * FileUtil::unlinkDir('d'); 测试删除文件夹 删除d文件夹 */ class FileUtil { /** * 建立文件夹 * * @param string $aimUrl * @return viod */ function createDir($aimUrl) { $aimUrl = str_replace('', '/', $aimUrl); $aimDir = ''; $arr = explode('/', $aimUrl); foreach ($arr as $str) { $aimDir .= $str . '/'; if (!file_exists($aimDir)) { mkdir($aimDir); } } } /** * 建立文件 * * @param string $aimUrl * @param boolean $overWrite 该参数控制是否覆盖原文件 * @return boolean */ function createFile($aimUrl, $overWrite = false) { if (file_exists($aimUrl) && $overWrite == false) { return false; } elseif (file_exists($aimUrl) && $overWrite == true) { FileUtil::unlinkFile($aimUrl); } $aimDir = dirname($aimUrl); FileUtil::createDir($aimDir); touch($aimUrl); return true; } /** * 移动文件夹 * * @param string $oldDir * @param string $aimDir * @param boolean $overWrite 该参数控制是否覆盖原文件 * @return boolean */ function moveDir($oldDir, $aimDir, $overWrite = false) { $aimDir = str_replace('', '/', $aimDir); $aimDir = substr($aimDir, -1) == '/' ? $aimDir : $aimDir . '/'; $oldDir = str_replace('', '/', $oldDir); $oldDir = substr($oldDir, -1) == '/' ? $oldDir : $oldDir . '/'; if (!is_dir($oldDir)) { return false; } if (!file_exists($aimDir)) { FileUtil::createDir($aimDir); } @$dirHandle = opendir($oldDir); if (!$dirHandle) { return false; } while(false !== ($file = readdir($dirHandle))) { if ($file == '.' || $file == '..') { continue; } if (!is_dir($oldDir.$file)) { FileUtil::moveFile($oldDir . $file, $aimDir . $file, $overWrite); } else { FileUtil::moveDir($oldDir . $file, $aimDir . $file, $overWrite); } } closedir($dirHandle); return rmdir($oldDir); } /** * 移动文件 * * @param string $fileUrl * @param string $aimUrl * @param boolean $overWrite 该参数控制是否覆盖原文件 * @return boolean */ function moveFile($fileUrl, $aimUrl, $overWrite = false) { if (!file_exists($fileUrl)) { return false; } if (file_exists($aimUrl) && $overWrite = false) { return false; } elseif (file_exists($aimUrl) && $overWrite = true) { FileUtil::unlinkFile($aimUrl); } $aimDir = dirname($aimUrl); FileUtil::createDir($aimDir); rename($fileUrl, $aimUrl); return true; } /** * 删除文件夹 * * @param string $aimDir * @return boolean */ function unlinkDir($aimDir) { $aimDir = str_replace('', '/', $aimDir); $aimDir = substr($aimDir, -1) == '/' ? $aimDir : $aimDir.'/'; if (!is_dir($aimDir)) { return false; } $dirHandle = opendir($aimDir); while(false !== ($file = readdir($dirHandle))) { if ($file == '.' || $file == '..') { continue; } if (!is_dir($aimDir.$file)) { FileUtil::unlinkFile($aimDir . $file); } else { FileUtil::unlinkDir($aimDir . $file); } } closedir($dirHandle); return rmdir($aimDir); } /** * 删除文件 * * @param string $aimUrl * @return boolean */ function unlinkFile($aimUrl) { if (file_exists($aimUrl)) { unlink($aimUrl); return true; } else { return false; } } /** * 复制文件夹 * * @param string $oldDir * @param string $aimDir * @param boolean $overWrite 该参数控制是否覆盖原文件 * @return boolean */ function copyDir($oldDir, $aimDir, $overWrite = false) { $aimDir = str_replace('', '/', $aimDir); $aimDir = substr($aimDir, -1) == '/' ? $aimDir : $aimDir.'/'; $oldDir = str_replace('', '/', $oldDir); $oldDir = substr($oldDir, -1) == '/' ? $oldDir : $oldDir.'/'; if (!is_dir($oldDir)) { return false; } if (!file_exists($aimDir)) { FileUtil::createDir($aimDir); } $dirHandle = opendir($oldDir); while(false !== ($file = readdir($dirHandle))) { if ($file == '.' || $file == '..') { continue; } if (!is_dir($oldDir . $file)) { FileUtil::copyFile($oldDir . $file, $aimDir . $file, $overWrite); } else { FileUtil::copyDir($oldDir . $file, $aimDir . $file, $overWrite); } } return closedir($dirHandle); } /** * 复制文件 * * @param string $fileUrl * @param string $aimUrl * @param boolean $overWrite 该参数控制是否覆盖原文件 * @return boolean */ function copyFile($fileUrl, $aimUrl, $overWrite = false) { if (!file_exists($fileUrl)) { return false; } if (file_exists($aimUrl) && $overWrite == false) { return false; } elseif (file_exists($aimUrl) && $overWrite == true) { FileUtil::unlinkFile($aimUrl); } $aimDir = dirname($aimUrl); FileUtil::createDir($aimDir); copy($fileUrl, $aimUrl); return true; } } ?> |
匹配中文字符的正则表达式: [u4e00-u9fa5]
评注:匹配中文还真是个头疼的事,有了这个表达式就好办了
匹配双字节字符(包括汉字在内):[^x00-xff]
评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
匹配空白行的正则表达式:ns*r
评注:可以用来删除空白行
匹配HTML标记的正则表达式:<(S*?)[^>]*>.*?|<.*? />
评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力
匹配首尾空白字符的正则表达式:^s*|s*$
评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式
匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
评注:表单验证时很实用
匹配网址URL的正则表达式:[a-zA-z]+://[^s]*
评注:网上流传的版本功能很有限,上面这个基本可以满足需求
匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
评注:表单验证时很实用
匹配国内电话号码:d{3}-d{8}|d{4}-d{7}
评注:匹配形式如 0511-4405222 或 021-87888822
匹配腾讯QQ号:[1-9][0-9]{4,}
评注:腾讯QQ号从10000开始
匹配中国邮政编码:[1-9]d{5}(?!d)
评注:中国邮政编码为6位数字
匹配身份证:d{15}|d{18}
评注:中国的身份证为15位或18位
匹配ip地址:d+.d+.d+.d+
评注:提取ip地址时有用
匹配特定数字:
^[1-9]d*$ //匹配正整数
^-[1-9]d*$ //匹配负整数
^-?[1-9]d*$ //匹配整数
^[1-9]d*|0$ //匹配非负整数(正整数 + 0)
^-[1-9]d*|0$ //匹配非正整数(负整数 + 0)
^[1-9]d*.d*|0.d*[1-9]d*$ //匹配正浮点数
^-([1-9]d*.d*|0.d*[1-9]d*)$ //匹配负浮点数
^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$ //匹配浮点数
^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$ //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$ //匹配非正浮点数(负浮点数 + 0)
评注:处理大量数据时有用,具体应用时注意修正
匹配特定字符串:
^[A-Za-z]+$ //匹配由26个英文字母组成的字符串
^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串
^[a-z]+$ //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串
^w+$ //匹配由数字、26个英文字母或者下划线组成的字符串
在使用RegularExpressionValidator验证控件时的验证功能及其验证表达式介绍如下:
只能输入数字:“^[0-9]*$”
只能输入n位的数字:“^d{n}$”
只能输入至少n位数字:“^d{n,}$”
只能输入m-n位的数字:“^d{m,n}$”
只能输入零和非零开头的数字:“^(0|[1-9][0-9]*)$”
只能输入有两位小数的正实数:“^[0-9]+(.[0-9]{2})?$”
只能输入有1-3位小数的正实数:“^[0-9]+(.[0-9]{1,3})?$”
只能输入非零的正整数:“^+?[1-9][0-9]*$”
只能输入非零的负整数:“^-[1-9][0-9]*$”
只能输入长度为3的字符:“^.{3}$”
只能输入由26个英文字母组成的字符串:“^[A-Za-z]+$”
只能输入由26个大写英文字母组成的字符串:“^[A-Z]+$”
只能输入由26个小写英文字母组成的字符串:“^[a-z]+$”
只能输入由数字和26个英文字母组成的字符串:“^[A-Za-z0-9]+$”
只能输入由数字、26个英文字母或者下划线组成的字符串:“^w+$”
验证用户密码:“^[a-zA-Z]w{5,17}$”正确格式为:以字母开头,长度在6-18之间,
只能包含字符、数字和下划线。
验证是否含有^%&”,;=?$”等字符:“[^%&'',;=?$x22]+”
只能输入汉字:“^[u4e00-u9fa5],{0,}$”
验证Email地址:“^w+[-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$”
验证InternetURL:“^http://([w-]+.)+[w-]+(/[w-./?%&=]*)?$”
验证电话号码:“^((d{3,4})|d{3,4}-)?d{7,8}$”
正确格式为:“XXXX-XXXXXXX”,“XXXX-XXXXXXXX”,“XXX-XXXXXXX”,
“XXX-XXXXXXXX”,“XXXXXXX”,“XXXXXXXX”。
验证身份证号(15位或18位数字):“^d{15}|d{}18$”
验证一年的12个月:“^(0?[1-9]|1[0-2])$”正确格式为:“01”-“09”和“1”“12”
验证一个月的31天:“^((0?[1-9])|((1|2)[0-9])|30|31)$”
正确格式为:“01”“09”和“1”“31”。
匹配中文字符的正则表达式: [u4e00-u9fa5]
匹配双字节字符(包括汉字在内):[^x00-xff]
匹配空行的正则表达式:n[s| ]*r
匹配HTML标记的正则表达式:/<(.*)>.*|<(.*) />/
匹配首尾空格的正则表达式:(^s*)|(s*$)
匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
匹配网址URL的正则表达式:http://([w-]+.)+[w-]+(/[w- ./?%&=]*)?
(1)应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
String.prototype.len=function(){return this.replace([^x00-xff]/g,”aa”).length;}
(2)应用:javascript中没有像vbscript那样的trim函数,我们就可以利用这个表达式来实现
代码如下 | 复制代码 |
String.prototype.trim = function() { return this.replace(/(^s*)|(s*$)/g, “”); } |
(3)应用:利用正则表达式分解和转换IP地址
代码如下 | 复制代码 |
function IP2V(ip) //IP地址转换成对应数值 { re=/(d+).(d+).(d+).(d+)/g //匹配IP地址的正则表达式 if(re.test(ip)) { return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1 } else { throw new Error(“Not a valid IP address!”) } } |
(4)应用:从URL地址中提取文件名的javascript程序
s=”http://www.9499.net/page1.htm”;
s=s.replace(/(.*/){0,}([^.]+).*/ig,”$2″) ;//Page1.htm
(5)应用:利用正则表达式限制网页表单里的文本框输入内容
用正则表达式限制只能输入中文:onkeyup=”value=value.replace(/[^u4E00-u9FA5]/g,”) “onbeforepaste=”clipboardData.setData(”text”,clipboardData.getData(”text”).replace(/[^u4E00-u9FA5]/g,”))”
用正则表达式限制只能输入全角字符: onkeyup=”value=value.replace(/[^uFF00-uFFFF]/g,”) “onbeforepaste=”clipboardData.setData(”text”,clipboardData.getData(”text”).replace(/[^uFF00-uFFFF]/g,”))”
用正则表达式限制只能输入数字:onkeyup=”value=value.replace(/[^d]/g,”) “onbeforepaste= “clipboardData.setData(”text”,clipboardData.getData(”text”).replace(/[^d]/g,”))”
用正则表达式限制只能输入数字和英文:onkeyup=”value=value.replace(/[W]/g,”) “onbeforepaste=”clipboardData.setData(”text”,clipboardData.getData(”text”).replace(/[^d]/g,”
相关文章
- 下面小编来给大家演示几个php操作zip文件的实例,我们可以读取zip包中指定文件与删除zip包中指定文件,下面来给大这介绍一下。 从zip压缩文件中提取文件 代...2016-11-25
Jupyter Notebook读取csv文件出现的问题及解决
这篇文章主要介绍了JupyterNotebook读取csv文件出现的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2023-01-06- 这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
- 今天小编就为大家分享一篇解决Pycharm的项目目录突然消失的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-22
- PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
- 有时我们接受或下载到的PSD文件打开是空白的,那么我们要如何来解决这个 问题了,下面一聚教程小伙伴就为各位介绍Photoshop打开PSD文件空白解决办法。 1、如我们打开...2016-09-14
- C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
- 这篇文章主要介绍了解决python 使用openpyxl读写大文件的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-13
- 这篇文章主要介绍了C#实现HTTP下载文件的方法,包括了HTTP通信的创建、本地文件的写入等,非常具有实用价值,需要的朋友可以参考下...2020-06-25
- 这篇文章主要为大家详细介绍了SpringBoot实现excel文件生成和下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-09
php无刷新利用iframe实现页面无刷新上传文件(1/2)
利用form表单的target属性和iframe 一、上传文件的一个php教程方法。 该方法接受一个$file参数,该参数为从客户端获取的$_files变量,返回重新命名后的文件名,如果上传失...2016-11-25- 要替换字符串中的内容我们只要利用php相关函数,如strstr,str_replace,正则表达式了,那么我们要替换目录所有文件的内容就需要先遍历目录再打开文件再利用上面讲的函数替...2016-11-25
- 又码了一个周末的代码,这次在做一些关于文件上传的东西。(PHP UPLOAD)小有收获项目是一个BT种子列表,用户有权限上传自己的种子,然后配合BT TRACK服务器把种子的信息写出来...2016-11-25
- 今天小编在这里就来给photoshop的这一款软件的使用者们来说下AI源文件转photoshop图像变模糊问题的解决教程,各位想知道具体解决方法的使用者们,那么下面就快来跟着小编...2016-09-14
- 这篇文章主要介绍了C++万能库头文件在vs中的安装步骤(图文),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-23
- 步骤:Window -> PHP -> Editor -> Templates,这里可以设置(增、删、改、导入等)管理你的模板。新建文件注释、函数注释、代码块等模板的实例新建模板,分别输入Name、Description、Patterna)文件注释Name: 3cfileDescriptio...2013-10-04
- index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
- 本篇文章主要说明的是与php文件上传的相关配置的知识点。PHP文件上传功能配置主要涉及php.ini配置文件中的upload_tmp_dir、upload_max_filesize、post_max_size等选项,下面一一说明。打开php.ini配置文件找到File Upl...2015-10-21
ant design中upload组件上传大文件,显示进度条进度的实例
这篇文章主要介绍了ant design中upload组件上传大文件,显示进度条进度的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-10-29- 这篇文章主要介绍了C#使用StreamWriter写入文件的方法,涉及C#中StreamWriter类操作文件的相关技巧,需要的朋友可以参考下...2020-06-25