php怎么编辑文件,PHP删除目录下所有的文件?
引言
作为服务器端编程语言,PHP当然具备了操作系统文件的能力。今天我们来说一下使用PHP如何删除某个目录下的所有文件。
今天我们从最简单的形式讨论,但目录下的操作。
我们说PHP是一个函数库毫不为过,因为针对各种功能,它都封装了许多内置的函数,拿来用就可以了。而文件目录操作函数,我们推荐使用glob。
该函数的参数形式:
array glob( string $pattern[, int $flags = 0] )
用于寻找与模式匹配的文件路径。使用起来代码应该是这样的:
首先使用 glob 模式匹配出目录下所有文件,这会返回一个数组。然后遍历,再使用 is_file 函数判定是否文件类型,如果是则调用 unlink 函数删除。
逻辑大概就是这样子。在Linux操作系统下,上面的模式扫描不出来隐藏文件。如果要把隐藏文件扫描出来,需要修改一下匹配模式如下:
遍历和文件类型判断逻辑相同。
极简主义我们知道解决问题,不会是一种单一的办法,我们总是有很多方式实现同样的需求。那么对于上述的代码,对于强迫症同学来说,还是写的有些拖沓了,要是一行能搞定就好了。
真的可以一样搞定。我们借助于PHP的内置函数遍历操作函数 array_map 可以轻松实现。代码如下:
是不是少了很多手动造轮子的粗糙感。但是,这个函数缺少了 is_file 判断,是有一定风险的。特别是回调使用 unlink 这样的删除操作,尤其需要注意。
把 glob 函数的返回值使用 (array) 进行强制类型转换,是为了防止出现返回 false,不能直接传递到 array_filter 进行过滤的缘故。
面向对象写惯了JAVA的同学应该对类库的方法操作严重依赖不能自拔,PHP也是有配套OOP方法的,只是我们用的太少,没有系统地学习罢了。下面提贴出来一个 OOP 风格的代码来解决这个问题。
不做解释,因为用的太少。为什么?因为看看 $di $ri 对象实例的操作,还有最后 rmdir unlink 的函数操作,你终究明白,要做到真正的面向对象,还差得远呢!
共同努力吧~~
写在最后很令人伤心,本想提供一个OOP的实现,还是被迫用了函数方法,我们已经尽力了。整体而言,函数操作和函数操作,更适合PHP流程处理。
Happy coding :_)
我是 @程序员小助手 ,持续分享编程知识,欢迎关注。
php环境配置?
1,下载PHP
php下载版本比较多,其中,
vc9=vs2008编译,推荐使用IIS+php搭配模式,
vc6=vs6编译,推荐使用apache+php方式搭配,
Thread Safe,线程安全,执行时会进行线程(Thread)安全检查,以防止有新要求就启动新线程的CGI执行方式而耗尽系统资源。Non Thread Safe是非线程安全,在执行时不进行线程(Thread)安全检查。
Non Thread Safe,
再来看PHP的两种执行方式:ISAPI和FastCGI。
ISAPI执行方式是以DLL动态库的形式使用,可以在被用户请求后执行,在处理完一个用户请求后不会马上消失,所以需要进行线程安全检查,这样来提高程序的执行效率,所以如果是以ISAPI来执行PHP,建议选择Thread Safe版本;
而FastCGI执行方式是以单一线程来执行操作,所以不需要进行线程的安全检查,除去线程安全检查的防护反而可以提高执行效率,所以,如果是以FastCGI来执行PHP,建议选择Non Thread Safe版本。
官方并不建议你将Non Thread Safe 应用于生产环境,所以我们选择Thread Safe 版本的PHP来使用。
2,配置php
解压到某个目录,如c:/php345
将php.INI-development重命名为php.ini
fastcgi.impersonate=1 默认为0,如果使用IIS,你需要开启:cgi.fix_pathinfo=1
cgi.force_redirect=0 默认开启,如果你使用IIS,可以将其关闭
其次指定extension_dir目录和date.timezone目录
extension_dir = "C:/php53iis/ext"
date.timezone= Asia/Shanghai
修改PHP.INI配置文件中的cgi.fix_pathinfo = 1,PHP 会修正 SCRIPT_FILENAME 为真实的文件地址,否则 PHP 将无法找到需要处理的 PHP 文件。
3,配置Nginx
解压nginx,如c:/nginx
设定error.log的存放目录,将#error_log logs/error.log;的#去处,默认error.log是存放在Nginx安装目录中logs目录下。
php代码怎么转到dw中编辑?
切换到代码目录,右键打开文件,选择dw即可
linux中如何修改文件内容?
首先打开命令控制台找到要编辑的文件,执行命令ls看看下面有几个文件,在这个下面有个index.php文件。
2.然后输入执行命令vi index.php。
3.如果你现在想修改index文件的内容,按下间键盘上的'i'键,最下方就会变成INSERT,这个时候就可以修改了。
4.在修改文件内容之后,输入echo的代码进行保存 Esc+:+wq 这个是保存,回车保存。
5.保存完成以后,再次打开这个文件会发现刚才写入的代码已经保存到里面。
PHP有什么特点?
tep 1 =>
php的扩展模块都放在 ext/ 目录下,比如说 snmp模块、mysql模块。 我们要建立自己的模块,就要在ext目录下为自己的模块建一个目录。比如,我们要做一个分析config文件的模块,命名为pconfig模块(parse config的简写),需在ext下建立目录pconfig。将我写好的7个文件copy到该目录下,另外需对主目录下的configure和internal_functions.c作一些修改。
Step 2 =>
Makefile.am Makefile.in
是模板文件,用户执行configure时,会调用这两个文件,生成编译时所用的Makefile文件。修改时将小写的pconfig换成你自己的模块名,别忘了把大写的PCONFIG也替换掉(不要告诉我你不会vi的替换语句)。config.m4也是执行configure将会调用的检测脚本程序,以后我们来讨论这些脚本程序的更深入的修改。现在你只需要把pconfig该成你的模块就可以了。对config.h.stub和setup.stub也如法炮制。其实setup.stub也没什么用。
Step 3 =>
php3-pconfig.h 头文件中
extern php3_module_entry pconfig_module_entry;
#define pconfig_module_ptr &pconfig_module_entry
#define phpext_pconfig_ptr pconfig_module_ptr
这几行定义了模块的入口,将入口注册到php后,php会通过模块入口找到你写的函数
下面几个函数定义是用宏进行定义的,展开以后其实就是 php3_minit_pconfig , php3_rinit_pconfig ……分别在你的模块初试化或结束时被调用,如果你的模块很简单,也就不需要这些定义了
extern PHP_MINIT_FUNCTION(pconfig);
extern PHP_RINIT_FUNCTION(pconfig);
extern PHP_MSHUTDOWN_FUNCTION(pconfig);
PHP_MINFO_FUNCTION(pconfig);
这是你的函数声明,将来写在php脚本语句中的函数名就是在PHP_FUNCTION中定义的名字。
PHP_FUNCTION(pconfig_test);
如果有多个,还可以继续往下加
PHP_FUNCTION(pconfig_parsefile);
PHP_FUNCTION(pconfig_release); …….
Step 4 =>
接下来我们看最重点的C代码了
function_entry pconfig_functions[] = {
PHP_FE(pconfig_test, NULL)
{NULL, NULL, NULL}
};
定义的是你的函数的入口(前面我们提到过模块的入口),按照格式将你在头文件中定义的函数写进去吧。注意,这是用宏定义的,不要管语法是否正确。以后我们具体讨论这些宏的用法。
php3_module_entry pconfig_module_entry = {
"pconfig", pconfig_functions, PHP_MINIT(pconfig), PHP_MSHUTDOWN(pconfig), PHP_RINIT(pconfig), NULL, PHP_MINFO(pconfig), STANDARD_MODULE_PROPERTIES
};
注册模块的入口信息,比如模块名,函数接口,初试化模块将调用的函数等等,如果你的模块不执行复杂操作的话,可以忽略掉他们,写成
php3_module_entry pconfig_module_entry = {
"pconfig", pconfig_functions, NULL,NULL,NULL,NULL,NULL,STANDARD_MODULE_PROPERTIES
};
Step 5 =>
写你自己的函数
在头文件和function_entry处,我们已经定义了自己的函数pconfig_test,现在我们就来实现pconfig_test的功能。就比如执行两个数相加的和吧。
static void _php3_pconfig_test(INTERNAL_FUNCTION_PARAMETERS)
{ ......
}
PHP_FUNCTION(pconfig_test)
{
_php3_pconfig_test(INTERNAL_FUNCTION_PARAM_PASSTHRU);
}
当系统调用pconfig_test时,会调用你的_php3_pconfig_test函数,当然你也可以把_php3_pconfig_test里的内容直接写在PHP_FUNCTION(pconfig_test)中,这样做只是程序结构比较清晰。注意:不要将_php3_pconfig_test命名成php3_pconfig_test,PHP_FUNCTION(pconfig_test)宏展开后实际上就是php3_pconfig_test!
Step 6 =>
好了,现在我们开始修改configure,在echo $ac_n "checking for MySQL support""... $ac_c" 1>&6的前面(当然,如果你熟悉configure的话,可以加在任何合适的地方)加上下面几句话
if test "${with_pconfig+set}" = set; then
withval="$with_pconfig"
# Add your lib in here
EXTRA_LIBS="$EXTRA_LIBS"
# Add your include path in here
INCLUDES="$INCLUDES"
EXT_SUBDIRS="$EXT_SUBDIRS pconfig"
EXT_LIBS="$EXT_LIBS pconfig/libphpext_pconfig.a"
EXTINFO_DEPS="$EXTINFO_DEPS ../ext/pconfig/extinfo.c.stub"
EXT_STATIC="$EXT_STATIC pconfig"
fi
修改internal_functions.c,在头文件定义中加入#include "ext/pconfig/php3_pconfig.h"
在zend_module_entry数组中加入phpext_pconfig_ptr,
Step 7 =>
从新configure,带上需要的参数,不要忘记的是在参数里加入 --with-pconfig
Step 8 =>
index.php3
<? echo pconfig_test(123,678)."
"; ?>
执行%>php index.php3