PHP __FILE__获取文件绝对路径用法

 更新时间:2016年11月25日 16:48  点击:1400

PHP 常量 dirname(__file__)

__FILE__ :被称为PHP魔术常量 ,返回当前执行PHP脚本的完整路径和文件名,包含一个绝对路径

1)dirname(__FILE__) 函数返回的是脚本所在在的路径。     更新网络
比如文件 b.php教程 包含如下内容:    
         <?php   
   $basedir = dirname(__FILE__);    
   echo $basedir
                                            //将在页面打印出一个这个文件所在绝对路径!
   ?>    
   我做的测试得到结果: E:websiteothertestcms
   这个相当于, asp教程中的server.mappth的用法

如果b.php被其他目录里的a.php文件require 或者 include 去引用的话。 变量$basedir 的内容还是b.php所在的那个文件夹的路径。    而不是变成a.php文件所在的目录。

2)dirname(__FILE__) 一般会返回文件所的当前目录到系统根目录的一个目录结构。 

不会返回当前的文件名称。    dirname(__FILE__) 也可能返回一个 . (当前目录)    [原因是 b.php 文件在 http.conf 或者 PHP 配置开发环境的默认WEB目录下

 

<?php
   echo __FILE__ ; // 取得当前文件的绝对地址,结果:D:wwwtest.php
   echo dirname(__FILE__); // 取得当前文件所在的绝对目录,结果:D:www
   echo dirname(dirname(__FILE__)); //取得当前文件的上一层目录名,结果:D:
?>
===========PHP获取文件绝对路径=======

===========chdir() 函数===========
定义和用法
chdir() 函数把当前的目录改变为指定的目录。

若成功,则该函数返回 true,否则返回 false。

语法
chdir(directory)参数 描述
directory 必需。规定新的当前目录。
例子

<?php
//获得当前目录
echo getcwd();
echo "<br />";

//改变为 images 目录
chdir("images");
echo "<br />";
echo getcwd();
?> 输出:

C:testwebmain
C:testwebmainimages


===========chdir() 函数===========


chdir() 函数把当前的目录改变为指定的目录。

若成功,则该函数返回 true,否则返回 false。

语法
chdir(directory)参数 描述
directory 必需。规定新的当前目录。
例子

<?php
//获得当前目录
echo getcwd();
echo "<br />";

//改变为 images 目录
chdir("images");
echo "<br />";
echo getcwd();
?>

<?php教程
/* 函数定义:
 *  1.函数是一个被命名的
 *  2.独立的代码段
 *  3.函数执行特定任务
 *  4.并可以给调用它的程序返回一个值
 *
 * 函数的优点:
 *  1.提高程序的重用性
 *  2.提高程序的可维护性
 *  3.可以提高开发效率
 *  4.提高软件的可靠性
 *  5.控制程序的复杂性
 *
 * 函数的声明
 *  function 函数名(){
 *
 *  }
 *
 *  function 函数名(参数1,参数2,参数...)
 *  {
 *   函数体
 *  }
 *
 *  function 函数名()
 *  {
 *   函数体;
 *   返回值;
 *  }
 *  function 函数名(参数列表...)
 *  {
 *   函数体;
 *   返回值
 *  }
 *
 *  注意:
 * 一、函数必须调用才能执行,可以在声明之前调用,也可以在声明之后调用
 * 二、函数名命名和变量一样,aaa bbb ccc aaaBbbCcc(第一单词小写,以后每个单词首字母大写)
 * 三、函数在声明时不能重名
 * 四、可以通过向函数传递参数,改变函数的行为
 *     形参:在声明函数时,声明的参数,参数就是变量,多个参数用,分开
 *     实参:调用函数时传给形参数值(数据,也可以是变量)
 * 五、如果没有返回值则称为过程
 * 六、通过使用return语句返回数据
 * 七、函数执行到return语句就结束,不要再这个语句后写代码,也可以用return结束函数的执行
 *
 * 函数名的作用:
 *  1.调用函数,开始执行函数
 *  2.可以向函数中传递数据
 *  3.函数名就是返回的值
 *
 *
 */
PHP 函数:
所有的函数都使用关键词 "function()" 来开始
命名函数 - 函数的名称应该提示出它的功能。函数名称以字母或下划线开头。
添加 "{" - 开口的花括号之后的部分是函数的代码。
插入函数代码
添加一个 "}" - 函数通过关闭花括号来结束。

 

<html>
<body>

<?php
function writeMyName()
  {
  echo "David Yang";
  }

writeMyName();
?>

</body>
</html>


//另一种输出方式
现在,我们要在 PHP 脚本中使用这个函数了:

<

html>
<body>

<?php
function writeMyName()
  {
  echo "David Yang";
  }

echo "Hello world!<br />";
echo "My name is ";
writeMyName();
echo ".<br />That's right, ";
writeMyName();
echo " is my name.";
?>

</body>
</html>以上代码的输出:

Hello world!
My name is David Yang.
That's right, David Yang is my name

函数引用&

 

function &c()
{

}

&c是什么意思,有什么好处与坏处 这个我也不明白

 

function c(&$var)
{
$GLOBALS['MALL'] =&$var;
}
&$var和普通传值有什么区别!
这个是引用的意思,可以在函数内部修改$var的值
举个例子:
function c($var){
$var=$var+1;
}
$var=10;
c($var);
echo $var;这个输出是10

如果函数改成function c(&$var){}


系统函数用法

PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
  求两个数组的交集问题可以使用array_intersect(),array_inersect_assoc,array_intersect_key来实现,其中array_intersect()函数是求两个数的交集,返回一个交集共有元素的数组(只是数组值得比较)、array_intersect_assoc()函数是将键值和值绑定,一起比较交集部分、array_intersect_key()函数是将两个数组的键值进行比较,返回键值交集的数组。

  但实际应用中也遇到了一些小问题,正如下:

  实例:


   

<?PHP         $array = array("red"=>"Red","green"=>"red4","Red15"=>"Red",7=>"Level","Width"=>"Red","azzzz1"=>"art","peak"=>158);        $array1 = array("red"=>"Red2","greena"=>"red","Red15"=>"Red",7=>"Level","Width"=>"Red","azzzz"=>"art","peak"=>158);        $num = array_intersect($array,$array1);        print_r ($num);        echo "<br />";        $num = array_intersect_assoc($array,$array1);        print_r($num);        echo "<br />";        $num = array_intersect_key($array,$array1);        print_r ($num);    ?>

  运行结果:


Array ( [red] => Red [Red15] => Red [7] => Level [Width] => Red [azzzz1] => art [peak] => 158 ) Array ( [Red15] => Red [7] => Level [Width] => Red [peak] => 158 ) Array ( [red] => Red [Red15] => Red [7] => Level [Width] => Red [peak] => 158 )
  总结:

    1.array_intersect()函数进行的比较只有数组值的比较,而且存在如”Red“和”Red2“比较时会返回"Red",反之则不会返回"Red2";

    2.array_intersect_assoc()函数是将数组的值与键值一起比较,而且不会存在array_intersect的情况,适用于较严格的比较;

    3.array_intersect_key()函数适用于比较两个数组键值的交集,返回的并不只有键值,而是键值和对应的数组值


实例

<?php
$a = array(
        'a' => '你好',
        'b' => 'bb'
);
//header('Content-Type:application/json; charset=UTF-8');
echo json_encode($a)."n";
function replace_unicode_escape_sequence($match)
{
        return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UCS-2BE');
}
echo preg_replace_callback('/\u([0-9a-f]{4})/i','replace_unicode_escape_sequence',json_encode($a))."n";
?>

php教程 ereg()把htm转换成xml文件实现方法

语法: int ereg(string pattern, string string, array [regs]);

返回值: 整数/数组

 

<?php

$text = "<p>This is some text here "</p>".</p>";
ereg("<p>(([^<"]|[^<]*<[^/][^<])*("[^"]*"([^<"]|[^<]*<[^/][^<])*)*)?</p>", $text, $matches);
echo "Found text: " . $matches[1] . "n";
?>

 

内容说明


本函数以 pattern 的规则来解析比对字符串 string。比对结果返回的值放在数组参数 regs 之中,regs[0] 内容就是原字符串 string、regs[1] 为第一个合乎规则的字符串、regs[2] 就是第二个合乎规则的字符串,余类推。若省略参数 regs,则只是单纯地比对,找到则返回值为 true。

利用php教程的http_referer函数来判断用户的来路,这是简单了,
实例

<?php
            if (isset($_SERVER['HTTP_REFERER'])) {
                    print "The page you were on previously was {$_SERVER['HTTP_REFERER']}<br />";
            } else {
                    print "You didn't click any links to get here<br />";
            }
    ?>

    <a href="refer.php">Click me!</a>

下面我们让用户不知道我们的来路处理
实例

]<?php
$host = "www.123cha.com";
$referer = "http://".$host;
$fp = fsockopen ($host, 80, $errno, $errstr, 30);
if (!$fp){
        echo "$errstr ($errno)<br>;n";
}else{
$request = "
GET / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */"."*
Referer: http://$host
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Host: $host
Connection: Close"
."rnrn";


fputs ($fp, "$request");
while (!feof($fp))
{
   $res[] = fgets($fp,1024);
}
$html = join("",$res);
fclose ($fp);
$fp = file_put_contents("123cha.html",$html);
echo "done";
}[/code]

这不就行了?

不过很奇怪的是,
www.hao123.com
的页面抓下来是乱码(除了http头),这是为什么?难道是因为用了gzip之类压缩?

[code]<?php
$host = "www.111cn.net";
$html = file_get_contents("http://".$host);
$fp = file_put_contents("hao123.html",$html);
echo "done";
?>;[/code]


但这样抓的就没问题.

再来分析开始抓的http头
[code]HTTP/1.1 200 OK Date: Wed, 31 Aug 2005 00:59:36 GMT Server: Apache/1.3.27 Cache-Control: max-age=1296000 Expires: Thu, 15 Sep 2005 00:59:36 GMT Last-Modified: Mon, 29 Aug 2005 13:56:00 GMT Accept-Ranges: bytes Connection: close Content-Type: text/html Content-Encoding: gzip Content-Length: 14567[/code]

果然有这句,Content-Encoding: gzip
原来压缩了的,长度14567字节了,
用第二种方法抓,原来没压缩的html是71143字节,原来file_get_contents还可以自动解压缩.


实例二

<?php
$host = '127.0.0.1';
$target = '/2.php';
$referer = 'http://www.111cn.net'; //伪造HTTP_REFERER地址
$fp = fsockopen($host, 80, $errno, $errstr, 30);
if (!$fp){
echo "$errstr($errno)<br />n";
}
else{
$out = "
GET $target HTTP/1.1
Host: $host
Referer: $referer
Connection: Closernrn";
fwrite($fp, $out);
while (!feof($fp)){
echo fgets($fp, 1024);
}
fclose($fp);
}
?>

    另一个2.php文件很简单,只是写上一行读取当前的HTTP_REFERER服务器值的代码即可,如下:

<?php
echo "<hr />";
echo $_SERVER["HTTP_REFERER"];
?>

var_export -- 输出或返回一个变量的字符串表示
描述
mixed var_export ( mixed expression [, bool return])


此函数返回关于传递给该函数的变量的结构信息,它和 var_dump() 类似,不同的是其返回的表示是合法的 PHP 代码。

您可以通过将函数的第二个参数设置为 TRUE,从而返回变量的表示。

比较 var_export() 和 var_dump().

 

<?php教程
  $languages = array( 'French', 'German', 'Russian', 'Chinese',
                      'Hindi', 'Quechua', 'Spanish', 'Hausa');
  printf("<pre>Original array:n%s</pre>n", var_export($languages, TRUE));

  $slice1 = array_slice($languages, 2, 4);
  printf("<pre>Slice 1:n%s</pre>n", var_export($slice1, TRUE));

  $slice2 = array_slice($languages, 2, 4, TRUE);
  printf("<pre>Slice 2:n%s</pre>n", var_export($slice2, TRUE));

  $slice3 = array_slice($languages, -6, -2, TRUE);
  printf("<pre>Slice 3:n%s</pre>n", var_export($slice3, TRUE));

  $last3 = array_slice($languages, -3);
  printf("<p>Last 3: %s</p>n", var_export($last3, TRUE));

  $last3 = array_slice($languages, -3, 3, TRUE);
  printf("<p>Last 3: %s</p>n", var_export($last3, TRUE));
?>

[!--infotagslink--]

相关文章

  • php读取zip文件(删除文件,提取文件,增加文件)实例

    下面小编来给大家演示几个php操作zip文件的实例,我们可以读取zip包中指定文件与删除zip包中指定文件,下面来给大这介绍一下。 从zip压缩文件中提取文件 代...2016-11-25
  • PHP成员变量获取对比(类成员变量)

    下面本文章来给大家介绍在php中成员变量的一些对比了,文章举了四个例子在这例子中分别对不同成员变量进行测试与获取操作,下面一起来看看。 有如下4个代码示例,你认...2016-11-25
  • Jupyter Notebook读取csv文件出现的问题及解决

    这篇文章主要介绍了JupyterNotebook读取csv文件出现的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2023-01-06
  • php 获取用户IP与IE信息程序

    php 获取用户IP与IE信息程序 function onlineip() { global $_SERVER; if(getenv('HTTP_CLIENT_IP')) { $onlineip = getenv('HTTP_CLIENT_IP');...2016-11-25
  • php获取一个文件夹的mtime的程序

    php获取一个文件夹的mtime的程序了,这个就是时间问题了,对于这个问题我们来看小编整理的几个例子,具体的操作例子如下所示。 php很容易获取到一个文件夹的mtime,可以...2016-11-25
  • Photoshop打开PSD文件空白怎么解决

    有时我们接受或下载到的PSD文件打开是空白的,那么我们要如何来解决这个 问题了,下面一聚教程小伙伴就为各位介绍Photoshop打开PSD文件空白解决办法。 1、如我们打开...2016-09-14
  • 如何获取网站icon有哪些可行的方法

    获取网站icon,常用最简单的方法就是通过website/favicon.ico来获取,不过由于很多网站都是在页面里面设置favicon,所以此方法很多情况都不可用。 更好的办法是通过google提供的服务来实现:http://www.google.com/s2/favi...2014-06-07
  • C#操作本地文件及保存文件到数据库的基本方法总结

    C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
  • 解决python 使用openpyxl读写大文件的坑

    这篇文章主要介绍了解决python 使用openpyxl读写大文件的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-13
  • C#实现HTTP下载文件的方法

    这篇文章主要介绍了C#实现HTTP下载文件的方法,包括了HTTP通信的创建、本地文件的写入等,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • SpringBoot实现excel文件生成和下载

    这篇文章主要为大家详细介绍了SpringBoot实现excel文件生成和下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-09
  • jquery如何获取元素的滚动条高度等实现代码

    主要功能:获取浏览器显示区域(可视区域)的高度 : $(window).height(); 获取浏览器显示区域(可视区域)的宽度 :$(window).width(); 获取页面的文档高度 $(document).height(); 获取页面的文档宽度 :$(document).width();...2015-10-21
  • php无刷新利用iframe实现页面无刷新上传文件(1/2)

    利用form表单的target属性和iframe 一、上传文件的一个php教程方法。 该方法接受一个$file参数,该参数为从客户端获取的$_files变量,返回重新命名后的文件名,如果上传失...2016-11-25
  • php批量替换内容或指定目录下所有文件内容

    要替换字符串中的内容我们只要利用php相关函数,如strstr,str_replace,正则表达式了,那么我们要替换目录所有文件的内容就需要先遍历目录再打开文件再利用上面讲的函数替...2016-11-25
  • PHP文件上传一些小收获

    又码了一个周末的代码,这次在做一些关于文件上传的东西。(PHP UPLOAD)小有收获项目是一个BT种子列表,用户有权限上传自己的种子,然后配合BT TRACK服务器把种子的信息写出来...2016-11-25
  • jquery获取div距离窗口和父级dv的距离示例

    jquery中jquery.offset().top / left用于获取div距离窗口的距离,jquery.position().top / left 用于获取距离父级div的距离(必须是绝对定位的div)。 (1)先介绍jquery.offset().top / left css: 复制代码 代码如下: *{ mar...2013-10-13
  • Jquery 获取指定标签的对象及属性的设置与移除

    1、先讲讲JQuery的概念,JQuery首先是由一个 America 的叫什么 John Resig的人创建的,后来又很多的JS高手也加入了这个团队。其实 JQuery是一个JavaScript的类库,这个类库集合了很多功能方法,利用类库你可以用简单的一些代...2014-05-31
  • AI源文件转photoshop图像变模糊问题解决教程

    今天小编在这里就来给photoshop的这一款软件的使用者们来说下AI源文件转photoshop图像变模糊问题的解决教程,各位想知道具体解决方法的使用者们,那么下面就快来跟着小编...2016-09-14
  • C++万能库头文件在vs中的安装步骤(图文)

    这篇文章主要介绍了C++万能库头文件在vs中的安装步骤(图文),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-23
  • Zend studio文件注释模板设置方法

    步骤:Window -> PHP -> Editor -> Templates,这里可以设置(增、删、改、导入等)管理你的模板。新建文件注释、函数注释、代码块等模板的实例新建模板,分别输入Name、Description、Patterna)文件注释Name: 3cfileDescriptio...2013-10-04