完整代码:
<?php
//需要替换的关键字
$GLOBALS["patterns"] = array(
"/#BASE_URL#/"
);
//替换后的内容,和上面的匹配规则一一对应
$GLOBALS["replacements"] = array(
"http://api.map.baidu.com/lbsapi/cloud/"
//"http://172.22.168.178/lbsapi/"
//"http://dev.baidu.com/wiki/static/map/cloud/"
);
/**
* 操纵文件类
*
* 例子:
* 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::createDir('a/1/2/3'); 测试建立文件夹 建一个a/1/2/3文件夹
* FileUtil::unlinkFile('b/d/3.exe'); 测试删除文件 删除b/d/3.exe文件
*/
class FileUtil {
/**
* 建立文件夹 www.
*
* @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
* @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);
//替换变量
$apiFilePointer = fopen($aimUrl, 'r');
$apiFileContent = fread($apiFilePointer, filesize($aimUrl));
//只在js、html、css文件进行替换
if (preg_match('/(\.js|\.html|\.css|\.htm)$/', $aimUrl)) {
$apiFileContent = preg_replace($GLOBALS["patterns"], $GLOBALS["replacements"], $apiFileContent);
}
fclose($apiFilePointer);
echo $aimUrl."\r\n";
$apiFilePointer = fopen($aimUrl, 'w+');
fwrite($apiFilePointer, $apiFileContent);
fclose($apiFilePointer);
//替换变量
return true;
}
}
FileUtil::copyDir("resource","cloud",true);
?>
写一个bat批处理文件,来运行这个PHP。
击bat文件,全部页面里的相对地址就会变成绝对地址了。
一、php数组的声明与赋值
<?php
//声明
$arr = array();
//赋值
$arr[0] = 'str1';
$arr['name'] = 'str2';
$arr[] = 'str3'
array_push($arr,'str4');
//取值
$rs = $arr[0];
$rs = $arr['name'];
//获取数据长度
$arr_count = count($arr);
$arr_count = sizeof($arr);
//此2个方法无区别
?>
重新整理键名
$a=array("a"=>"Cat","b"=>"Dog","c"=>"Horse");
print_r(array_values()($a));
?>
输出
Array ( [0] => Cat [1] => Dog [2] => Horse )
二、合并数组
array_merge() 函数把两个或多个数组合并为一个数组。
如果键名有重复,该键的键值为最后一个键名对应的值(后面的覆盖前面的)。如果数组是数字索引的,则键名会以连续方式重新索引。
注释:如果仅仅向 array_merge() 函数输入了一个数组,且键名是整数,则该函数将返回带有整数键名的新数组,其键名以 0 开始进行重新索引。
$a1=array("a"=>"Horse","b"=>"Dog");
$a2=array("c"=>"Cow","b"=>"Cat");
print_r(array_merge($a1,$a2));?>
?>
输出:
Array ( [a] => Horse [b] => Cat [c] => Cow )
三、去除重复值
array_unique() 函数移除数组中的重复的值,并返回结果数组。
当几个数组元素的值相等时,只保留第一个元素,其他的元素被删除。
返回的数组中键名不变。
$a=array("a"=>"Cat","b"=>"Dog","c"=>"Cat");
print_r(array_unique($a));
?>
输出
Array ( [a] => Cat [b] => Dog )
四、获取所有键名
array_keys()() 函数返回包含数组中所有键名的一个新数组。
如果提供了第二个参数,则只返回键值为该值的键名。
如果 strict 参数指定为 true,则 PHP 会使用全等比较 (===) 来严格检查键值的数据类型。
语法array_keys(array,value) array必需。规定输入的数组。value可选。指定值的索引(键)。strict
可选。与 value 参数一起使用。可能的值:
true - 根据类型返回带有指定值的键名。 false - 默认值。不依赖类型。
例子1
$a=array("a"=>"Horse","b"=>"Cat","c"=>"Dog");
print_r(array_keys($a));
?>
输出:
Array ( [0] => a [1] => b [2] => c )
例子2
$a=array("a"=>"Horse","b"=>"Cat","c"=>"Dog");
print_r(array_keys($a,"Dog"));
?>
例子 3
使用 strict 参数 (false):
$a=array(10,20,30,"10");
print_r(array_keys($a,"10",false));
?>
输出:
Array ( [0] => 0 [1] => 3 )
例子 4
使用 strict 参数 (true):
$a=array(10,20,30,"10");
print_r(array_keys($a,"10",true));
?>
输出:
Array ( [0] => 3)
五、将元素组合成一个字符串
implode()
例子
$arr = array('Hello','World!','Beautiful','Day!');
echo implode(" ",$arr);
?>
输出:
Hello World! Beautiful Day!
六、追加数组
array_merge_recursive()函数与array_merge()相同,可以将两个或多个数组合并在一起,形成一个联合的数组.两者之间的区别在于,当某个输入数组中的某个键己经存在于结果数组中时该函数会采取不同的处理方式.array_merge()会覆盖前面存在的键/值对,替换为当前输入数组中的键/值对,而array_merge_recursive()将把两个值合并在一起,形成一个新的数组,并以原有的键作为数组名。还有一个数组合并的形式,就是递归追加数组。其形式为:array array_merge_recursive(array array1,array array2[…,array arrayN])
<?php
$fruit1 = array("apple" => "red", "banana" => "yellow");
$fruit2 = array("pear" => "yellow", "apple" => "green");
$result = array_merge_recursive($fruit1, $fruit2);
print_r($result);
// output
// Array ( [apple] => Array ( [0] => red [1] => green ) [banana] => yellow [pear] => yellow )
?>
现在键 apple 指向一个数组,这个数组由两个颜色值组成的索引数组。
七、连接数组
array_combine()函数会得到一个新数组,它由一组提交的键和对应的值组成。其形式为:array array_combine(array keys,array values)
注意,两个输入数组必须大小相同,不能为空。
例子:
<?php
$name = array("apple", "banana", "orange");
$color = array("red", "yellow", "orange");
$fruit = array_combine($name, $color);
print_r($fruit);
// output
// Array ( [apple] => red [banana] => yellow [orange] => orange )
?>
八、拆分数组
array_slice()函数将返回数组中的一部分,从键offset开始,到offset+length位置结束。其形式:array array_slice (array array, int offset[,int length])
offset 为正值时,拆分将从距数组开头的offset 位置开始;如果offset 为负值,则拆分从距数组末尾的offset 位置开始。如果省略了可选参数length,则拆分将从offset 开始,一直到数组的最后一个元素。如果给出了length 且为正数,则会在距数组开头的offset+length 位置结束。相反,如果给出了length且为负数,则在距数组开头的count(input_array)-|length|位置结束。
例子:
<?php
$fruits = array("Apple", "Banana", "Orange", "Pear", "Grape", "Lemon", "Watermelon");
$subset = array_slice($fruits, 3);
print_r($subset);
// output
// Array ( [0] => Pear [1] => Grape [2] => Lemon [3] => Watermelon )
?>
然后使用下负长度:
<?php
$fruits = array("Apple", "Banana", "Orange", "Pear", "Grape", "Lemon", "Watermelon");
$subset = array_slice($fruits, 2, -2);
print_r($subset);
// output
// Array ( [0] => Orange [1] => Pear [2] => Grape )
?>
九、接合数组
array_splice()函数会删除数组中从offset开始到offset+length 结束的所有元素,并以数组的形式返回所删除的元素。其形式为:array array_splice ( array array , int offset[,length[,array replacement]])
offset 为正值时,则接合将从距数组开头的offset 位置开始,offset 为负值时,接合将从距数组末尾的offset 位置开始。如果忽略可选的length 参数,则从offset 位置开始到数组结束之间的所有元素都将被删除。如果给出了length 且为正值,则接合将在距数组开头的offset + leng th 位置结束。相反,如果给出了length且为负值,则结合将在距数组开头的count(input_array)-length的位置结束。
例子:
<?php
$fruits = array("Apple", "Banana", "Orange", "Pear", "Grape", "Lemon", "Watermelon");
$subset = array_splice($fruits, 4);
print_r($fruits);
print_r($subset);
// output
// Array ( [0] => Apple [1] => Banana [2] => Orange [3] => Pear )
// Array ( [0] => Grape [1] => Lemon [2] => Watermelon )
?>
可以使用可选参数replacement来指定取代目标部分的数组。
PHP加入环境变量
解压php,例如解压到"D:/php"中。
然后,右击"我的电脑"->"属性"->选择"高级"标签页->点击"环境变量"。
点击下面"系统变量"列表内 的"Path"->点击下面的"编辑"->在"变量值"最后处加上";D:/php"(php的解压路径,不要忘记先加上";" 号)
点击"编辑"按钮前面的"新建"按钮->在"变量名"后输入"PHPRC"->"变量值"输入"D:/PHP" (PHP的解压路径)->点击"确定"完成。