php技术第二章

1.getcwd
若成功,则返回当前工作目录,否则返回 false。如:echo getcwd; 结果输出:C:\testweb\main

2.chdir() 函数改变当前的目录。
如:echo getcwd; result: /home/php
chdir('ceshi');//类似linux命令cd 如:cd ceshi
echo getcwd;  result:/home/php/ceshi

3 以下是PHP在不同版本,不同服务器上的兼容处理 /* 在部分IIS上会没有REQUEST_URI变量 */
$query_string = isset($_SERVER['argv'][0]) ? $_SERVER['argv'][0] : $_SERVER['QUERY_STRING'];
if (! isset($_SERVER['REQUEST_URI'])) {
    $_SERVER['REQUEST_URI'] = PHP_SELF . '?' . $query_string;
} else {
    if (strpos($_SERVER['REQUEST_URI'], '?') === false && $query_string) {
        $_SERVER['REQUEST_URI'] .= '?' . $query_string;
    }
}

4./* 数据过滤 */
if (! get_magic_quotes_gpc()) {
    $_GET = addslashes_deep($_GET);
    $_POST = addslashes_deep($_POST);
    $_COOKIE = addslashes_deep($_COOKIE);
}

magic_quotes_gpc函数在php中的作用是判断解析用户提示的数据,如包括有:post、get、cookie过来的数据增加转义字符“ ”,以确保这些数据不会引起程序,特别是数据库语句因为特殊字符引起的污染而出现致命的错误.
在php的配置文件中,有个布尔值的设置,就是magic_quotes_runtime。当它打开时,php的大部分函数自动的给从外部引入的(包括数据库或者文件)数据中的溢出字符加上反斜线。 当然如果重复给溢出字符加反斜线,那么字符串中就会有多个反斜线,所以这时就要用set_magic_quotes_runtime()与get_magic_quotes_runtime()设置和检测php.ini文件中magic_quotes_runtime状态。
当magic_quotes_gpc=On的时候,函数get_magic_quotes_gpc()就会返回1
当magic_quotes_gpc=Off的时候,函数get_magic_quotes_gpc()就会返回0
如果get_magic_quotes_gpc是off的,那么就用addslashes 对变量中的特殊字符进行转义
echo addslashes('Shanghai is the "biggest" city in China.'); result:Shanghai is the \"biggest\" city in China.

/**
 * 递归方式的对变量中的特殊字符进行转义
 * @access public
 * @param mix $value            
 *
 * @return mix
 */
function addslashes_deep($value)
{
    if (empty($value)) {
        return $value;
    } else {
        return is_array($value) ? array_map('addslashes_deep', $value) : addslashes($value);
    }
}

/**
 * 将对象成员变量或者数组的特殊字符进行转义
 * @access public
 * @param mix $obj
 *            对象或者数组
 * @return mix 对象或者数组
 */
function addslashes_deep_obj($obj)
{
    if (is_object($obj) == true) {
        foreach ($obj as $key => $val) {
            if (($val) == true) {
                $obj->$key = addslashes_deep_obj($val);
            } else {
                $obj->$key = addslashes_deep($val);
            }
        }
    } else {
        $obj = addslashes_deep($obj);
    }
    
    return $obj;
}

stripslashes() 函数删除由 addslashes() 函数添加的反斜杠。

提示:该函数可用于清理从数据库中或者从 HTML 表单中取回的数据。该函数可用于清理从数据库中或者从 HTML 表单中取回的数据。
如:echo stripslashes("Who\'s jams?"); result:Who's jams?

/**
 * 递归方式的对变量中的特殊字符去除转义
 *
 * @access public
 * @param mix $value            
 *
 * @return mix
 */
function stripslashes_deep($value)
{
    if (empty($value)) {
        return $value;
    } else {
        return is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value);
    }
}
这里讲解下array_map的用法
array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。
<?php
function myfunction($v)
{
  return($v*$v);//每个值都乘以本身
}

$a=array(1,2,3,4,5);
print_r(array_map("myfunction",$a));//将函数作用到数组中的每个值上,每个值都乘以本身,并返回带有新值的数组:
?>
result:Array ( [0] => 1 [1] => 4 [2] => 9 [3] => 16 [4] => 25 )

5./*标准错误输出到Apache Log*/
function set_standard_log ($msg='') {
    if(is_array($msg)) $msg = var_export($msg,TRUE);
    error_log('PHP LOG INFO ->'.$msg );
}

6.compact /*创建一个包含变量名和它们的值的数组*/
<?php
$firstname = "Bill";
$lastname = "Gates";
$age = "60";

$result = compact("firstname", "lastname", "age");

print_r($result);
?>
result: Array ( [firstname] => Bill [lastname] => Gates [age] => 60 )

7.basename 函数返回路径中的文件名部分
<?php
$path = "/myitem/home.php";
echo basename($path);//显示带有文件扩展名的文件名
// result:home.php
echo basename($path,".php");//显示不带有文件扩展名的文件名
//result: home
?>
result:

8.is_file  函数检查指定的文件名是否是正常的文件,如果文件存在且为正常的文件,则返回 true。
<?php
$file = "ceshi.txt";
if(is_file($file)){
  echo ("yes");
}else{
  echo ("no");
}
?>

9.array_walk  函数对数组中的每个元素应用用户自定义函数。在函数中,数组的键名和键值是参数
<?php
function mywalk($value,$key)
{
echo "The key $key has the value $value<br>";
}
$a=array("a"=>"red","b"=>"green","c"=>"blue");
array_walk($a,"mywalk");
?>
result:
The key a has the value red
The key b has the value green
The key c has the value blue

10.parse_url 本函数将 URL 字符串予以解析,并将结果返回数组中
<?php
$arr = parse_url('http://www.baidu.com/1/2/ceshi/ceshi.php');
echo '<pre>';print_r($arr);die();
?>
result:
Array
(
    [scheme] => http
    [host] => www.baidu.com
    [path] => /1/2/ceshi/ceshi.php
)

11.trigger_error 用于在用户指定的条件下触发一个错误消息。它与内建的错误处理器一同使用,也可以与由 set_error_handler() 函数创建的用户自定义函数使用。
<?php
$a=5;
if ($a>2){
trigger_error("A custom error has been triggered");
}
?>

12./* 获得当前的域名 @return string */
function get_domain()
{
    /* 协议 */
    $protocol = (isset($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS']) != 'off')) ? 'https://' : 'http://';
    
    /* 域名或IP地址 */
    if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) {
        $host = $_SERVER['HTTP_X_FORWARDED_HOST'];
    } elseif (isset($_SERVER['HTTP_HOST'])) {
        $host = $_SERVER['HTTP_HOST'];
    } else {
        /* 端口 */
        if (isset($_SERVER['SERVER_PORT'])) {
            $port = ':' . $_SERVER['SERVER_PORT'];
            
            if ((':80' == $port && 'http://' == $protocol) || (':443' == $port && 'https://' == $protocol)) {
                $port = '';
            }
        } else {
            $port = '';
        }
        
        if (isset($_SERVER['SERVER_NAME'])) {
            $host = $_SERVER['SERVER_NAME'] . $port;
        } elseif (isset($_SERVER['SERVER_ADDR'])) {
            $host = $_SERVER['SERVER_ADDR'] . $port;
        }
    }
    
    return $protocol . $host;
}

13./*获得网站的URL地址  get_domain方法在12点已经封装  htmlentities() 函数把字符转换为 HTML 实体。*/
function site_url()
{
    define('PHP_SELF', htmlentities(isset($_SERVER['PHP_SELF']) ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME']));
    return get_domain() . substr(PHP_SELF, 0, strrpos(PHP_SELF, '/'));
}

14.
/**
 * 截取UTF-8编码下字符串的函数
 *
 * @param string $str
 *            被截取的字符串
 * @param int $length
 *            截取的长度
 * @param bool $append
 *            是否附加省略号
 *            
 * @return string
 */
function sub_str($string, $length = 0, $append = true)
{
    if (strlen($string) <= $length) {
        return $string;
    }
    
    $string = str_replace(array(
        '&amp;',
        '&quot;',
        '&lt;',
        '&gt;'
    ), array(
        '&',
        '"',
        '<',
        '>'
    ), $string);
    
    $strcut = '';
    
    if (strtolower(CHARSET) == 'utf-8') {
        $n = $tn = $noc = 0;
        while ($n < strlen($string)) {
            
            $t = ord($string[$n]);
            if ($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) {
                $tn = 1;
                $n ++;
                $noc ++;
            } elseif (194 <= $t && $t <= 223) {
                $tn = 2;
                $n += 2;
                $noc += 2;
            } elseif (224 <= $t && $t < 239) {
                $tn = 3;
                $n += 3;
                $noc += 2;
            } elseif (240 <= $t && $t <= 247) {
                $tn = 4;
                $n += 4;
                $noc += 2;
            } elseif (248 <= $t && $t <= 251) {
                $tn = 5;
                $n += 5;
                $noc += 2;
            } elseif ($t == 252 || $t == 253) {
                $tn = 6;
                $n += 6;
                $noc += 2;
            } else {
                $n ++;
            }
            
            if ($noc >= $length) {
                break;
            }
        }
        if ($noc > $length) {
            $n -= $tn;
        }
        
        $strcut = substr($string, 0, $n);
    } else {
        for ($i = 0; $i < $length; $i ++) {
            $strcut .= ord($string[$i]) > 127 ? $string[$i] . $string[++ $i] : $string[$i];
        }
    }
    
    $strcut = str_replace(array(
        '&',
        '"',
        '<',
        '>'
    ), array(
        '&amp;',
        '&quot;',
        '&lt;',
        '&gt;'
    ), $strcut);
    
    if ($append && $string != $strcut) {
        $strcut .= '...';
    }
    
    return $strcut;
}

15 获得用户的真实IP地址
function real_ip()
{
    static $realip = NULL;
    
    if ($realip !== NULL) {
        return $realip;
    }
    
    if (isset($_SERVER)) {
        if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
            $arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
            
            /* 取X-Forwarded-For中第一个非unknown的有效IP字符串 */
            foreach ($arr as $ip) {
                $ip = trim($ip);
                
                if ($ip != 'unknown') {
                    $realip = $ip;
                    
                    break;
                }
            }
        } elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
            $realip = $_SERVER['HTTP_CLIENT_IP'];
        } else {
            if (isset($_SERVER['REMOTE_ADDR'])) {
                $realip = $_SERVER['REMOTE_ADDR'];
            } else {
                $realip = '0.0.0.0';
            }
        }
    } else {
        if (getenv('HTTP_X_FORWARDED_FOR')) {
            $realip = getenv('HTTP_X_FORWARDED_FOR');
        } elseif (getenv('HTTP_CLIENT_IP')) {
            $realip = getenv('HTTP_CLIENT_IP');
        } else {
            $realip = getenv('REMOTE_ADDR');
        }
    }
    
    preg_match("/[\d\.]{7,15}/", $realip, $onlineip);
    $realip = ! empty($onlineip[0]) ? $onlineip[0] : '0.0.0.0';
    
    return $realip;
}

16
/**
 * 验证输入的邮件地址是否合法
 *
 * @param string $email
 *            需要验证的邮件地址
 *            
 * @return bool
 */
function is_email($user_email)
{
    $chars = "/^([a-z0-9+_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,5}\$/i";
    if (strpos($user_email, '@') !== false && strpos($user_email, '.') !== false) {
        if (preg_match($chars, $user_email)) {
            return true;
        } else {
            return false;
        }
    } else {
        return false;
    }
}

17
/**
 * 检查是否为一个合法的时间格式
 *
 * @param string $time            
 * @return void
 */
function is_time($time)
{
    $pattern = '/[\d]{4}-[\d]{1,2}-[\d]{1,2}\s[\d]{1,2}:[\d]{1,2}:[\d]{1,2}/';
    
    return preg_match($pattern, $time);
}

18
/**
     * 获得服务器上的 GD 版本
     *
     * @return      int         可能的值为0,1,2
     */
    function gd_version()
    {
        static $version = -1;

        if ($version >= 0)
        {
            return $version;
        }

        if (!extension_loaded('gd'))
        {
            $version = 0;
        }
        else
        {
            // 尝试使用gd_info函数
            if (PHP_VERSION >= '4.3')
            {
                if (function_exists('gd_info'))
                {
                    $ver_info = gd_info();
                    preg_match('/\d/', $ver_info['GD Version'], $match);
                    $version = $match[0];
                }
                else
                {
                    if (function_exists('imagecreatetruecolor'))
                    {
                        $version = 2;
                    }
                    elseif (function_exists('imagecreate'))
                    {
                        $version = 1;
                    }
                }
            }
            else
            {
                if (preg_match('/phpinfo/', ini_get('disable_functions')))
                {
                    /* 如果phpinfo被禁用,无法确定gd版本 */
                    $version = 1;
                }
                else
                {
                  // 使用phpinfo函数
                   ob_start();
                   phpinfo(8);
                   $info = ob_get_contents();
                   ob_end_clean();
                   $info = stristr($info, 'gd version');
                   preg_match('/\d/', $info, $match);
                   $version = $match[0];
                }
             }
        }

        return $version;
     }

19
/**
 * 将一个字串中含有全角的数字字符、字母、空格或'%+-()'字符转换为相应半角字符
 *
 * @access public
 * @param string $str
 *            待转换字串
 *            
 * @return string $str 处理后字串
 */
function make_semiangle($str)
{
    $arr = array(
        '0' => '0',
        '1' => '1',
        '2' => '2',
        '3' => '3',
        '4' => '4',
        '5' => '5',
        '6' => '6',
        '7' => '7',
        '8' => '8',
        '9' => '9',
        'A' => 'A',
        'B' => 'B',
        'C' => 'C',
        'D' => 'D',
        'E' => 'E',
        'F' => 'F',
        'G' => 'G',
        'H' => 'H',
        'I' => 'I',
        'J' => 'J',
        'K' => 'K',
        'L' => 'L',
        'M' => 'M',
        'N' => 'N',
        'O' => 'O',
        'P' => 'P',
        'Q' => 'Q',
        'R' => 'R',
        'S' => 'S',
        'T' => 'T',
        'U' => 'U',
        'V' => 'V',
        'W' => 'W',
        'X' => 'X',
        'Y' => 'Y',
        'Z' => 'Z',
        'a' => 'a',
        'b' => 'b',
        'c' => 'c',
        'd' => 'd',
        'e' => 'e',
        'f' => 'f',
        'g' => 'g',
        'h' => 'h',
        'i' => 'i',
        'j' => 'j',
        'k' => 'k',
        'l' => 'l',
        'm' => 'm',
        'n' => 'n',
        'o' => 'o',
        'p' => 'p',
        'q' => 'q',
        'r' => 'r',
        's' => 's',
        't' => 't',
        'u' => 'u',
        'v' => 'v',
        'w' => 'w',
        'x' => 'x',
        'y' => 'y',
        'z' => 'z',
        '(' => '(',
        ')' => ')',
        '[' => '[',
        ']' => ']',
        '【' => '[',
        '】' => ']',
        '〖' => '[',
        '〗' => ']',
        '「' => '[',
        '」' => ']',
        '『' => '[',
        '』' => ']',
        '{' => '{',
        '}' => '}',
        '《' => '<',
        '》' => '>',
        '%' => '%',
        '+' => '+',
        '—' => '-',
        '-' => '-',
        '~' => '-',
        ':' => ':',
        '。' => '.',
        '、' => ',',
        ',' => '.',
        '、' => '.',
        ';' => ',',
        '?' => '?',
        '!' => '!',
        '…' => '-',
        '‖' => '|',
        '"' => '"',
        ''' => '`',
        '`' => '`',
        '|' => '|',
        '〃' => '"',
        ' ' => ' '
    );
    
    return strtr($str, $arr);
}

20. array_unique 移除数组中重复的值
$arr = array(1,2,1,3);
$arr = array_unique($arr);
echo '<pre>';print_r($arr);die();
result:Array
(
    [0] => 1
    [1] => 2
    [3] => 3
)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值