PHP新手--PHP文件操作问题 只要权限够的APACHE才允许执行此操作.PHP操作文本最简单的莫过于 file_get_contentsfile_put_contents 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼上,楼主没有说在PHP4下.再说.PHP4的主机已经不多了. 现在又有一个问题,有一个文本文件:virtual_trash_count = yesvirtual_trash_name = .Trash #==The maximal size in bytes of a message, including envelope information===#message_size_limit = 60971520 virutal_mailbox_limit_size = 80971520vitual_mailbox_limit_override = yesvirtual_maildir_extended = yesvirtual_maildir_suffix = Maildir/virtual_create_maildirsize = yes我现在需要将"message_size_limit = 60971520"中的60971520动态改写为自己需要的数字,以下为我的程序<?php$filename = 'main.cf';if (file_exists($filename)) { if($file=fopen($filename,'a+')){ while(!feof($file)){ $row = fgets($file)."<br />"; if(strncasecmp("message_size_limit = ", $row, 21) == 0){ echo "找到字符串<br>"; echo $row."<br/>"; $rowtemp = substr_replace($row, "791126", 21)."\r\n"; //字符串替换 echo $rowtemp."<br/>"; //将替换的字符串写入文件 if (fwrite($file, $rowtemp) === TRUE) { echo "写入到文件成功!"; }else{ echo "不能写入到文件 $filename"; exit; } }else{ echo "字符串查找失败<br>"; } } }else{ echo "打开文件失败"; } fclose($file);//关闭文件 }else{ echo "文件打开失败";}?>PHP文件与'main.cf'文件在同一个目录下,现在运行后的效果为,会提示不能写入到文件 main.cf但是当我用记事本打开文件时,却又看到在文件未尾有message_size_limit = 791126这一行记录,请问我该怎么样写,才能在文件指针找到"message_size_limit = "后,将后面的内容进行改写,我的思路是找到这一行,然后将整行字符串进行替换,再将替换后的字符串写入文件,请问程序该怎么修改 改正一下: $row = fgets($file); 这一行后面没有."<br>"; file_put_contents(preg_replace("/(message_size_limit[\s]*=[\s]*)([0-9]*)/is", "\\1"."你要改成的数字", file_get_contents("main.cf")));自己调试吧.我没有测.... preg_replace为用正则表达式进行匹配替换,我现在是字符串查找并替换成功了,但是我想将替换后的字符串写入到文件中,并且在文件的原地修改 <?php$value="33333";file_put_contents("main.cf",preg_replace("/(message_size_limit[\s]*=)[\s]*([0-9]*)/is", "\\1 {$value}", file_get_contents("main.cf")));?> 好像不行啊,参数不匹配啊.file_put_contents ( string filename, string data [, int flags [, resource context]] )第一个参数为文件名啊,preg_replace返回的是什么东西啊,mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit] )mixed这是什么类型……~~~~~~~~~~~~~~ 又有问题了,呵呵 ,不好意思,麻烦大家了.<?php$filename = '/hehe.cf';if (file_exists($filename)){ if($file=fopen($filename,'a+')){ while(!feof($file)){ $row = fgets($file); echo $row.'<br>'; } } fclose($file);//关闭文件}//以上为显示文件内容部分,成功显示echo '<br>*******************<br>';$value="999999999999999999";if(file_exists("$filename")){ file_put_contents("$filename",preg_replace("/(message_size_limit[\s]*=)[\s]*([0-9]*)/is", "\\1 {$value}", file_get_contents("$filename"))); echo "值修改成功....";}?>现在的问题是,在Linux下,我能够读取文件,但是不能修改文件内容,但是在Linux下,此文件('/hehe.cf')的权限分配已经最大化了,请问该怎么处理啊.....谢谢. windows下 php的exec执行bat 我要弹出dos窗口 javascript中怎么调用php方法 返回字符串中的某两个位置之间的字符串,怎么弄 小弟今天刚看PHP,连接MSSQL时出现了Call to undefined function mssql_connect() 一个简单的参数传递问题,求教了! linux mysql 5 的启动问题,急! php可以嵌套吗 apache模拟多用户访问的问题 在服务忙时,PHP进程被当起。 谁能告诉我filesize()的正确用法?是不是认为很简单,近来看看! discuz模块用的什么技术? 怎么才能统计用户在登陆时输入10次错误
再说.PHP4的主机已经不多了.
有一个文本文件:
virtual_trash_count = yes
virtual_trash_name = .Trash
#==The maximal size in bytes of a message, including envelope information===#
message_size_limit = 60971520
virutal_mailbox_limit_size = 80971520
vitual_mailbox_limit_override = yes
virtual_maildir_extended = yes
virtual_maildir_suffix = Maildir/
virtual_create_maildirsize = yes
我现在需要将"message_size_limit = 60971520"中的60971520动态改写为自己需要的数字,以下为我的程序
<?php
$filename = 'main.cf';if (file_exists($filename)) {
if($file=fopen($filename,'a+')){
while(!feof($file)){
$row = fgets($file)."<br />";
if(strncasecmp("message_size_limit = ", $row, 21) == 0){
echo "找到字符串<br>";
echo $row."<br/>";
$rowtemp = substr_replace($row, "791126", 21)."\r\n"; //字符串替换
echo $rowtemp."<br/>";
//将替换的字符串写入文件
if (fwrite($file, $rowtemp) === TRUE) {
echo "写入到文件成功!";
}else{
echo "不能写入到文件 $filename";
exit;
}
}else{
echo "字符串查找失败<br>";
}
}
}else{
echo "打开文件失败";
}
fclose($file);//关闭文件
}else{
echo "文件打开失败";
}
?>
PHP文件与'main.cf'文件在同一个目录下,现在运行后的效果为,会提示
不能写入到文件 main.cf但是当我用记事本打开文件时,却又看到在文件未尾有
message_size_limit = 791126
这一行记录,请问我该怎么样写,才能在文件指针找到"message_size_limit = "后,将后面的内容进行改写,
我的思路是找到这一行,然后将整行字符串进行替换,再将替换后的字符串写入文件,
请问程序该怎么修改
自己调试吧.我没有测....
$value="33333";
file_put_contents("main.cf",preg_replace("/(message_size_limit[\s]*=)[\s]*([0-9]*)/is", "\\1 {$value}", file_get_contents("main.cf")));
?>
file_put_contents ( string filename, string data [, int flags [, resource context]] )
第一个参数为文件名啊,preg_replace返回的是什么东西啊,mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit] )
mixed这是什么类型……~~~~~~~~~~~~~~
<?php
$filename = '/hehe.cf';
if (file_exists($filename)){
if($file=fopen($filename,'a+')){
while(!feof($file)){
$row = fgets($file);
echo $row.'<br>';
}
}
fclose($file);//关闭文件
}
//以上为显示文件内容部分,成功显示
echo '<br>*******************<br>';
$value="999999999999999999";
if(file_exists("$filename")){
file_put_contents("$filename",preg_replace("/(message_size_limit[\s]*=)[\s]*([0-9]*)/is", "\\1 {$value}", file_get_contents("$filename")));
echo "值修改成功....";
}
?>
现在的问题是,在Linux下,我能够读取文件,但是不能修改文件内容,但是在Linux下,此文件('/hehe.cf')的权限分配已经最大化了,请问该怎么处理啊.....
谢谢.