php常用内置函数

PHP 魔术常量

PHP 向它运行的任何脚本提供了大量的预定义常量。

不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。

有八个魔术常量它们的值随着它们在代码中的位置改变而改变。

例如 __LINE__ 的值就依赖于它在脚本中所处的行来决定。这些特殊的常量不区分大小写,如下:

http://www.runoob.com/php/php-magic-constant.html


__DIR__ 和__FILE__ 

echo __FILE__.'<br>';  //D:\xampp\htdocs\layhm\app\home\controller\Entry.php
echo __DIR__.'<br>';   //D:\xampp\htdocs\layhm\app\home\controller
$dir = dirname(__FILE__).'<br>'; //D:\xampp\htdocs\layhm\app\home\controller
echo $dir;

  


 file_put_contents

写日志

 方法一(适合临时用):

//数组/字符串都可以
file_put_contents( 'log.log', date('Y-m-d H:i:s',time()) .' ' . var_export($_REQUEST,true) . "\r\n", FILE_APPEND);

 方法二:

例:    /www.wdmcake.com/data/log/日期/$file文件名
/**
*$str array/str 要写入的内容
*$dir str 日期文件夹里面的新建的文件夹名字  例如 /www.wdmcake.com/data/log/201806/sms_apiaas
*$file string 文件的名字 例:send_log_20180628.log
*/
function wdmlog($str,$dir='log',$file='log')
{
    if (!file_exists(ROOT_PATH . 'data/log/' . date('Ym'). '/' . $dir))
    {
        make_dir(ROOT_PATH . 'data/log/' . date('Ym'). '/' . $dir);
    }
    $str = is_array($str) ? var_export($str,true):$str;
       file_put_contents(ROOT_PATH . 'data/log/' . date('Ym'). '/' . $dir.'/' . $file .'_' . date('Ymd') . '.log', local_date('Y-m-d H:i:s') .' ' . $str . "\r\n", FILE_APPEND);

}

方法三:

function create_log($data,$merchant,$agency,$file='')
{
   if(empty($merchant)) die("商户code不可为空");
   if(empty($agency)) die("平台code不可为空");
   $file_path = ROOT_PATH . 'logdata/'.$merchant.'/'.$agency;
   if(!is_dir($file_path)){
        mkdir($file_path, 0777, true); 
    }    
    file_put_contents($file_path.'/'.$agency.'_' . $file . date('Ymd',time()) . '.log', date('Y-m-d H:i:s',time()) .' ' . var_export($data,true) . "\r\n", FILE_APPEND);
   }

var_export()和var_dump()

var_export() 函数返回关于传递给该函数的变量的结构信息,它和 var_dump() 类似,不同的是其返回的表示是合法的 PHP 代码。var_export必须返回合法的php代码, 也就是说,var_export返回的代码,可以直接当作php代码赋值个一个变量。 而这个变量就会取得和被var_export一样的类型的值。看下面一个简单的例子:

<?php
    
    $arr = array ( 1 , 2 , array ( "apple" , "banana" , "orange" ));  
    var_export ( $arr );  
    
?>

程序输出:

array (
  0 => 1,
  1 => 2,
  2 => 
  array (
    0 => 'apple',
    1 => 'banana',
    2 => 'orange',
  ),
)

注意,上面的输出是合法的PHP代码。假如用var_dump(),则输出为:

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  array(3) {
    [0]=>
    string(5) "apple"
    [1]=>
    string(6) "banana"
    [2]=>
    string(6) "orange"
  }
}

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

<?php
    
    $v = 'nowamagic';  
    $rs = var_export ( $v, TRUE );  
    
    echo $rs;
?>

程序运行结果:

'nowamagic'

注意两点:

  • var_export()会一直保留着结构化形式存储数据.
  • 但是特别请记住:此时的变量值的类型已是字符串了($var),不能再以数组的方式取出里面的值来。 

在PHPCMS的源码里,可以看到很多配置的参数都用数组记录的,包括它们的频道、内容等等。

function cache_write($file, $string, $type = 'array')  
{  
    if(is_array($string))  
    {  
        $type = strtolower($type);  
        if($type == 'array')  
        {  
            $string = "<?php\n return ".var_export($string,TRUE).";\n?>";  
        }  
        elseif($type == 'constant')  
        {  
            $data='';  
            foreach($string as $key => $value) $data .= "define('".strtoupper($key)."','".  
addslashes($value)."');\n";  
            $string = "<?php\n".$data."\n?>";  
        }  
    }  
    $strlen = file_put_contents(PHPCMS_CACHEDIR.$file, $string);  
    chmod(PHPCMS_CACHEDIR.$file, 0777);  
    return $strlen;  
}  

例子:

 1 $str="name=Peter&age=43";
 2 parse_str($str,$arr); //k=v形式的字符串转成数组
 3 var_dump($arr);
 4 
 5 $str = "tn=monline_dg&ie=utf-8&bs=httpbuildurl&f=3&rsv_bp=1&wd=php+buildquery&rsv_sug3=17&rsv_sug4=330&rsv_sug1=16&oq=php+build&rsv_sug2=0&rsp=0&inputT=8922";
 6 parse_str($str,$arr);  //k=v形式的字符串转成数组
 7 var_dump($arr);
 8 
 9 $url=var_export($arr,true); //k=v形式的字符串转成数组
10 $url2 = http_build_query($arr);  //关联数组转成k=v形式的字符串
11 echo($url);
12 echo '<br>';
13 echo($url2);
14 die;

打印结果:

 1 array(2) {
 2   ["name"]=>
 3   string(5) "Peter"
 4   ["age"]=>
 5   string(2) "43"
 6 }
 7 array(13) {
 8   ["tn"]=>
 9   string(10) "monline_dg"
10   ["ie"]=>
11   string(5) "utf-8"
12   ["bs"]=>
13   string(12) "httpbuildurl"
14   ["f"]=>
15   string(1) "3"
16   ["rsv_bp"]=>
17   string(1) "1"
18   ["wd"]=>
19   string(14) "php buildquery"
20   ["rsv_sug3"]=>
21   string(2) "17"
22   ["rsv_sug4"]=>
23   string(3) "330"
24   ["rsv_sug1"]=>
25   string(2) "16"
26   ["oq"]=>
27   string(9) "php build"
28   ["rsv_sug2"]=>
29   string(1) "0"
30   ["rsp"]=>
31   string(1) "0"
32   ["inputT"]=>
33   string(4) "8922"
34 }
35 array (
36   'tn' => 'monline_dg',
37   'ie' => 'utf-8',
38   'bs' => 'httpbuildurl',
39   'f' => '3',
40   'rsv_bp' => '1',
41   'wd' => 'php buildquery',
42   'rsv_sug3' => '17',
43   'rsv_sug4' => '330',
44   'rsv_sug1' => '16',
45   'oq' => 'php build',
46   'rsv_sug2' => '0',
47   'rsp' => '0',
48   'inputT' => '8922',
49 )<br>tn=monline_dg&ie=utf-8&bs=httpbuildurl&f=3&rsv_bp=1&wd=php+buildquery&rsv_sug3=17&rsv_sug4=330&rsv_sug1=16&oq=php+build&rsv_sug2=0&rsp=0&inputT=8922

 


 

compact()函数

http://www.runoob.com/php/func-array-compact.html

实例一:

创建一个包含变量名和它们的值的数组:

1 <?php
2 $firstname = "Peter";
3 $lastname = "Griffin";
4 $age = "41";
5 
6 $result = compact("firstname", "lastname", "age");
7 
8 print_r($result);
9 ?> 

打印效果:

 Array ( [firstname] => Peter [lastname] => Griffin [age] => 41 )  

实例二:

 1 <?php
 2 $user = [
 3                 'username' => 'lisi1',
 4                 'age' => 26,
 5         ];
 6 
 7$article = [
 8                 'title' => 'this is test',
 9           ];
10 
11 print_r(compact('user', 'article'));
12 die;
13 ?>

效果:

Array
(
    [user] => Array
        (
            [username] => lisi1
            [age] => 26
        )

    [article] => Array
        (
            [title] => this is test
        )

)

 


 isset() 函数

isset() — 检测变量是否设置。
如果 var 存在并且值不是 NULL 则返回 TRUE,否则返回 FALSE。
$a = "test";
$b = "anothertest";

var_dump(isset($a));      // TRUE
var_dump(isset($a, $b));  // TRUE
检测变量是否设置,并且不是 NULL。
如果已经使用 unset() 释放了一个变量之后,它将不再是 isset()。
unset ($a);

var_dump(isset($a));      // FALSE
var_dump(isset($a, $b));  // FALSE
若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。
同时要注意的是一个 NULL 字节("\0")并不等同于 PHP 的 NULL 常数。
$foo = NULL;
var_dump(isset($foo));    // FALSE

empty() 方法

当var存在,并且是一个非空非零的值时返回 FALSE 否则返回 TRUE.

以下的东西被认为是空的:

    "" (空字符串)
    0 (作为整数的0)
     0.0 (作为浮点数的0)
    "0" (作为字符串的0)
    NULL
    FALSE
    array() (一个空数组)
    $var; (一个声明了,但是没有值的变量)

pathinfo() 函数

定义和用法

pathinfo() 函数以数组的形式返回关于文件路径的信息。

返回的数组元素如下:

  • [dirname]
  • [basename]
  • [extension]

http://www.runoob.com/php/func-filesystem-pathinfo.html

 

thinkphp5中:

$basename = Request::instance()->root();
if (pathinfo($basename, PATHINFO_EXTENSION) == 'php') {
    $basename = dirname($basename);
}

弹出地址栏里的最后/后的参数

array_pop(explode("/",$path));


 

dirname()

http://www.w3school.com.cn/php/func_filesystem_dirname.asp

定义和用法

dirname() 函数返回路径中的目录部分。

例子:

<?php
echo dirname("c:/testweb/home.php");
echo dirname("/testweb/home.php");
?>

输出

c:/testweb
/testweb

 


basename() 函数

http://www.runoob.com/php/func-filesystem-basename.html

basename() 函数返回路径中的文件名部分。

实例

1 <?php
2 $path = "/testweb/home.php";
3 
4 //Show filename with file extension
5 echo basename($path) ."<br/>";
6 
7 //Show filename without file extension
8 echo basename($path,".php");
9 ?> 

上面的代码将输出:

home.php
home


filesize() 函数

定义和用法

filesize() 函数返回指定文件的大小。

如果成功,该函数返回文件大小的字节数。如果失败,则返回 FALSE。

语法

 filesize(filename)  

http://www.runoob.com/php/func-filesystem-filesize.html


file_exists()

定义和用法

file_exists() 函数检查文件或目录是否存在。

如果指定的文件或目录存在则返回 TRUE,否则返回 FALSE。

http://www.runoob.com/php/func-filesystem-file-exists.html


php函数filetime获取文件最后修改时间

filetime函数
定义和用法
filemtime() 函数返回文件内容上次的修改时间。
若成功,则时间以 Unix 时间戳的方式返回。若失败,则返回 false。

语法
filemtime(filename)

参数 描述
filename 必需。规定要检查的文件。

说明
本函数返回文件中的数据块上次被写入的时间,即文件的内容上次被修改的时间。

例如:

 

1 <?php
2 echo filemtime("test.txt");
3 echo "Last modified: ".date("F d Y H:i:s.",filemtime("test.txt"));
4 
5 //filemtime() 函数返回文件内容上次的UNIX修改时间。
6 //返回
7 //1139919766
8 //Last modified: February 14 2006 13:22:46.
9 ?>

 

 

 


PHP_EOL

换行符

unix系列用 \n

windows系列用 \r\n

mac用 \r

PHP中可以用PHP_EOL来替代,以提高代码的源代码级可移植性

 

1 <?php
2     echo PHP_EOL;
3     //windows平台相当于    echo "\r\n";
4     //unix\linux平台相当于    echo "\n";
5     //mac平台相当于    echo "\r";

 


get_defined_constants()返回所有常量数组

类似常用的还有

DIRECTORY_SEPARATOR

可以用函数get_defined_constants()来获取所有PHP常量

1 <?php
2     print_r(get_defined_constants());//get_defined_constants()返回所有常量数组

 


大小写转换:

http://www.runoob.com/php/func-string-ucwords.html


 

class_exists — 检查类是否已定义

bool class_exists ( string $class_name [, bool $autoload = true ] )

检查指定的类是否已定义。

function __autoload($class){
    include($class.'.php');
    if(!class_exists($class)){
        trigger_error("Unable to load class: $class",E_USER_WARNING);
    }
}

PHP is_file() 函数

定义和用法

is_file() 函数检查指定的文件是否是常规的文件。

如果文件是常规的文件,该函数返回 TRUE。

<?php
$file = "test.txt";
if(is_file($file))
{
echo ("$file is a regular file");
}
else
{
echo ("$file is not a regular file");
}
?>

上面的代码将输出:

test.txt is a regular file

php中目录与文件操作详解

http://www.jquerycn.cn/a_9928

posted @ 2018-07-31 05:40  HaimaBlog  阅读(399)  评论(0编辑  收藏  举报