易截截图软件、单文件、免安装、纯绿色、仅160KB

PHP,替换多个文件中的文本

需求:
    需要对两个目录中的文件内容进行查找替换,两个目录查找替换的内容不一样。
    实现中注意几点:
    (1)函数递归调用,来检索子目录;
    (2)函数名可以以参数形式传递;
    (3)用?进行非贪婪匹配;
    (4)每行匹配查找、整个文件内容匹配查找
<?php
//loopdir('dir1', 'repfile1');
loopdir('dir2', 'repfile2');
function loopdir($dir, $fun){
$dp = opendir($dir);
chdir($dir);
readdir($dp); //排除当前目录 "."
readdir($dp); //排除上层目录 "."
while( $v = readdir($dp) ){
if( is_dir($v) ) loopdir($v, $fun);
else $fun($v);
echo $v."<br>";
}
chdir("..");
}
function repfile1($filename){
$content = file_get_contents($filename);
if( empty($content) ){
echo "can't open file to read: ".$filename;
return ;
}

//加?号是进行非贪婪匹配,以免匹配的块太大
$content = preg_replace('/if \(!validateEmail\((.*?)"Email address is not valid(.*?})/s',
'if (!validateEmail(\\1"Email address is not valid\\2else if (!isNyhEmail(\\1"Can not add NYH email addresses.\\2',
$content);
writenewfile($filename, $content);
}
function repfile4615($filename){
$fpr = fopen($filename, 'r');
if( empty($fpr) ){
echo "can't open file to read: ".$filename;
return ;
}

$newContent = '';
while( $line = fgets($fpr) ){
$line = preg_replace('/^(.*)\$var_kitchen_dishwasher = "kitchen".\$kitchen_ind."_dishwasher";/s',
'\\1$var_kitchen_dishwasher = "kitchen".\$kitchen_ind."_dishwasher";
\\1$var_kitchen_oven = "kitchen".$kitchen_ind."_oven";
\\1$var_kitchen_fridge = "kitchen".$kitchen_ind."_fridge";', $line);
$newContent .= $line;
}
fclose($fpr);
writenewfile($filename, $newContent);
}
function writenewfile($filename, $content){
$fpw = fopen($filename, 'w');
if( empty($fpw) ){
echo "can't open file to write: ".$filename;
return ;
}
fwrite($fpw, $content);
fclose($fpw);
}
?>


相关文档:

PHP码农进化史2

1.是否可以在类的外部访问一个属性是由访问修饰符来确定的。
2.从类的外部直接访问类的属性是糟糕的想法。面向对象的一个方法就是鼓励封装。在PHP中,我们一般通过__get()与__set()函数来实现对
属性的访问.如果不直接访问一个类的属性而是编写访问函数,那么可以通过一段代码执行所有访问。最初的访问函数如下所示:
cla ......

怎样解决PHP中文乱码问题

最近在CSDN刚开了这个博客,没什么时间把以前写的文章搬过来,只能有空慢慢来了。
 --------------------------这篇文章仅献给那些一直在PHP乱码问题上困惑的人。
A.首先说下HTML中文乱码问题的解决方法。
比如有个index.html的页面(这里是指真正的静态页面,修改服务器的……伪静态的请看方案B)
1. ......

PHP 操作Access (正确)

 第一种方法:
<?php
class Access{
    function getConn(){
        $conn = @new COM("ADODB.Connection") or die ("ADO连接失败!");
        $connstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath(__IMP ......

PHP二维数组排序

 PHP本身是有一个多维数组排序的函数的。
bool
array_multisort
( array
$ar1
[, mixed
$arg
[, mixed
$...
[, array
$...
]]] )
下面是手册当中对于array_multisort函数的描述:
array_multisort() 可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序。
关联(string ......

PHP杂记

 preg_replace -- 执行正则表达式的搜索和替换
array_push --  将一个或多个单元压入数组的末尾(入栈)
preg_match -- 进行正则表达式匹配
exif_imagetype($file) ---图像类型;
echo "<SCRIPT LANGUAGE='JavaScript'>alert('得到');history.back();</SCRIPT>";
exit;
date_defaul ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号