1,引用文件方式
对include()来说,在include()执行时文件每次都要进行读取和评估;而对于require()来说,文件只处理一次(实际上,文件内容替换了require()语句)。这就意味着如果有包含这些指令之一的代码和可能执行多次的代码,则使用require()效率比较高。另一方面,如果每次执行代码时相读取不同的文件,或者有通过一组文件叠代的循环,就使用include(),因为可以给想要包括的文件名设置一个变量,当参数为include()时使用这个变量。
2,是否有条件引用
在PHP变成中,include()与require()的功能相同,但在用法上却有一些不同,include()是有条件包含函数,而require()则是无条件包含函数。例如在下面的一个例子中,如果变量$somgthing为真,则将包含文件somefile:
include("somefile");
}
但不管$something取何值,下面的代码将把文件somefile包含进文件里:
require("somefile");
}
下面的这个有趣的例子充分说明了这两个函数之间的不同。
while ($i < 3) {
require("somefile.$i");
$i++;
}
在这段代码中,每一次循环时,程序都将把同一个文件包含进去。很显然这不是程序员的初衷,从代码中我们可以看出这段代码希望在每次循环时,将不同的文件包含进来。如果要完成这个功能,必须求助函数include():
while ($i < 3) {
include("somefile.$i");
$i++;
}
3,报错方式
例子,写两个php文件,名字为test1.php 和test2.php,注意相同的目录中,不要存在一个名字是test999.php的文件。
test.php
include (”test999.php”);
echo “abc”;
?>
test2.php
require (”test999.php”)
echo “abc”;
?>
浏览第一个文件,因为没有找到test999.php文件,我们看到了报错信息,同时,报错信息的下边显示了abc,你看到的可能是类似下边的情况:
Warning: include(test1aaa.php) [function.include]: failed to open stream: No such file or directory in D:\WebSite\test.php on line 2
Warning: include() [function.include]: Failed opening ‘test1aaa.php’ for inclusion (include_path=’.;C:\php5\pear’) in D:\WebSite\test.php on line 2
abc
浏览第二个文件,因为没有找到test999.php文件,我们看到了报错信息,但是,报错信息的下边没有显示abc,你看到的可能是类似下边的情况:
Warning: require(test1aaa.php) [function.require]: failed to open stream: No such file or directory in D:\WebSite\test.php on line 2
Fatal error: require() [function.require]: Failed opening required ‘test1aaa.php’ (include_path=’.;C:\php5\pear’) in D:\WebSite\test.php on line 2
小结:
include和require的区别:include引入文件时,如果碰到错误,会给出提示,并继续运行下边的代码。
require引入文件时,如果碰到错误,会给出提示,并停止运行下边的代码。
本节主要内容:
PHP去除回车换行
例子:
//php 不同系统的换行
//不同系统之间换行的实现是不一样的
//linux 与unix中用 /n
//MAC 用 /r // www.
//window 为了体现与linux不同 则是 /r/n
//所以在不同平台上 实现方法就不一样
//php 有三种方法来解决
//1、使用str_replace() 来替换换行
$str = str_replace(array("/r/n", "/r", "/n"), "", $str);
//2、使用正则替换
$str = preg_replace('//s*/', '', $str);
//3、使用php定义好的变量 (建议使用)
$str = str_replace(PHP_EOL, '', $str);
?>
本节主要内容:
php遍历目录并重命名。
例子:
<?php
/**
* 遍历指定的目录
* 重命名目录与文件
* edit: www.
*/
/**
一个简单的目录递归函数
方法1:用dir返回对象
**/
function tree($directory)
{
$mydir = dir($directory);
echo "<ul>\n";
$i=1;
while($file = $mydir->read())
{
if((is_dir("$directory/$file")) AND ($file!=".") AND ($file!=".."))
{
echo "<li><font color=\"#ff00cc\"><b>$file</b></font></li>\n";
tree("$directory/$file");
}
else {
if(($file!=".") AND ($file!="..")) {
rename("/var/www/m2_old/tietu/".$file, "/var/www/m2_old/tietu/".$i.'.png');
$i++;
}
echo "<li>$file</li>\n";
}
}
echo "</ul>\n";
$mydir->close();
}
//开始运行
echo "<h2>目录为粉红色</h2><br>\n";
tree("/var/www/m2_old/tietu");
exit;
/***********************
方法2:用readdir()函数
************************/
function listDir($dir)
{
if(is_dir($dir))
{
if ($dh = opendir($dir))
{
while (($file = readdir($dh)) !== false)
{
if((is_dir($dir."/".$file)) && $file!="." && $file!="..")
{
echo "<b><font color='red'>文件名:</font></b>",$file,"<br><hr>";
listDir($dir."/".$file."/");
}
else
{
if($file!="." && $file!="..")
{
echo $file."<br>";
}
}
}
closedir($dh);
}
}
}
//开始运行
listDir("");