PHP简单功能的实现

检查一个变量是否为空

  • empty功能
    • 返回值:
    • 若变量不存在则返回 TRUE
    • 若变量存在且其值为””、0、”0”、NULL、FALSE、 array()、var $var; 以及没有任何属性的对象,则返回 TURE
    • 若变量存在且值不为””、0、”0”、NULL、FALSE、 array()、var $var; 以及没有任何属性的对象,则返回 FALSE

函数支持版本:(PHP 4, PHP 5, PHP 7

PHP提取字符串中的数字

  • 使用正则表达式:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function findNum($str=''){
    $str=trim($str);
    if(empty($str)){return '';}
    $reg='/(\d{3}(\.\d+)?)/is';//匹配数字的正则表达式
    preg_match_all($reg,$str,$result);
    if(is_array($result)&&!empty($result)&&!empty($result[1])&&!empty($result[1][0])){
    return $result[1][0];
    }
    return '';
    }
  • in_array方法:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function findNum($str=''){
    $str=trim($str);
    if(empty($str)){return '';}
    $temp=array('1','2','3','4','5','6','7','8','9','0');
    $result='';
    for($i=0;$i<strlen($str);$i++){
    if(in_array($str[$i],$temp)){
    $result.=$str[$i];
    }
    }
    return $result;
    }
  • is_numeric函数:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function findNum($str=''){
    $str=trim($str);
    if(empty($str)){return '';}
    $result='';
    for($i=0;$i<strlen($str);$i++){
    if(is_numeric($str[$i])){
    $result.=$str[$i];
    }
    }
    return $result;
    }

PHP操作数组

  • 创建空数组

    1
    2
    $x = [];
    var_dump($x); // array(0) {}
  • php 合并数组,且不重复相同的元素

    1
    2
    3
    4
    5
    $a = array("1","3","5","10","15");
    $b = array("1","3","5","6","9");
    $x = array_unique(array_merge($a,$b));
    var_dump($x);
    // 结果:array("1","3","5","10","15","6","9" )
  • php找到两个数组中相同的元素

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    // 找出两个数组相同的项
    function getSameArr($a1,$a2){
    $alength = count($a1);
    for ($i=0; $i <$alength ; $i++) {
    if (in_array($a1[$i],$a2)) {
    $sameArr[] = $a1[$i];
    }
    }
    if ($sameArr) {
    return $sameArr;
    }else{
    return array("0");
    }
    }

前端显示若超过字数,后面使用省略号

1
2
3
4
5
6
7
<?php
if (strlen($new['title']) < 51 ) {
echo $new['title'];
}else{
echo mb_substr($new['title'], 0,17,'utf-8').'...';
}
?>

文件上传

修改PHP上传文件的大小限制

使用POST请求提交的数据大小超过了服务器的最大限制数(8388608字节=8MB)会报告如下错误:

1
Warning: POST Content-Length of 625523488 bytes exceeds the limit of 8388608 bytes in Unknown on line 0

如果需要的话,可以通过修改PHP的配置文件php.ini中的post_max_size参数的值。

在PHP的配置文件php.ini中,默认存在如下配置信息(在php.ini中,行首的分号”;”表示当前行是注释,不会生效):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
;脚本解析输入数据(类似 POST 和 GET)允许的最大时间,单位是秒。 它从接收所有数据到开始执行脚本进行测量的。 
max_input_time = 60

;允许客户端单个POST请求发送的最大数据
post_max_size = 8M

;是否开启文件上传功能
file_uploads = On

;文件上传的临时存放目录(如果不指定,使用系统默认的临时目录)
;upload_tmp_dir =

;允许单个请求上传的最大文件大小
upload_max_filesize = 2M

;允许单个POST请求同时上传的最大文件数量
max_file_uploads = 20

PHP获取站点根目录

  • 获取文件路径

    1
    2
    3
    4
    5
    <?php
    echo __FILE__ ; // 取得当前文件的绝对地址,结果:D:\www\test.php
    echo dirname(__FILE__); // 取得当前文件所在的绝对目录,结果:D:\www\
    echo dirname(dirname(__FILE__)); //取得当前文件的上一层目录名,结果:D:\
    ?>
  • 魔术常量__FILE__:取得当前文件的路径,这里的路径包含了文件名;
  • dirname(__FILE__):返回一层目录;
  • realpath()函数:返回绝对路径,删除所有符号连接(比如 ‘/./‘, ‘/../‘ 以及多余的 ‘/‘),返回绝对路径名,若失败(如文件不存在),则返回 false。
  • 路径方式
1
2
define('BASE_PATH',str_replace('\\','/',realpath(dirname(__FILE__).'/'))."/");
echo BASE_PATH; // 输出结果:E:/wwwroot/

str_replace( '\\' , '/' , realpath(dirname(__FILE__).'/../')):把向左的“\”转化成向右的“/”。

  • url方式
1
2
3
PHP_SELF=$_SERVER['PHP_SELF'];
$url='http://'.$_SERVER['HTTP_HOST'].substr($PHP_SELF,0,strrpos($PHP_SELF,'/')+1);
echo $url; // 输出结果:http://localhost/
  • PHP取得站点根目录

    1
    2
    3
    4
    5
    echo $_SERVER['HTTP_HOST'];     //当前请求的 Host: 头部的内容 即域名信信息
    echo $_SERVER['PHP_SELF']; //当前正在执行脚本的文件相对网站根目录地址,就算该文件被其他文件引用也可以正确得到地址
    echo $_SERVER['SCRIPT_NAME']; //当前正在执行脚本的文件相对网站根目录地址,但当该文件被其他文件引用时,只显示引用文件的相对地址,不显示该被引用脚本的相对地址。
    echo $_SERVER['DOCUMENT_ROOT']; //网站相对服务器地址即网站的绝对路径名 #当前运行脚本所在的文档根目录。在服务器配置文件中定义
    echo $_SERVER['SCRIPT_FILENAME']; //当前执行脚本的绝对路径名。