美文网首页
php不常用的内置函数运用

php不常用的内置函数运用

作者: 每天都是幸运的一天 | 来源:发表于2017-04-16 11:46 被阅读0次

1. 邮箱或者ip地址的验证 是对 <i>filter_var</i> 的运用

filter_var() 函数通过指定的过滤器过滤变量。 
如果成功,则返回已过滤的数据,如果失败,则返回 false。 
语法 
filter_var(variable, filter, options)variable:必需。规定要过滤的变量。 
filter:可选。规定要使用的过滤器的 ID。 (参见下面的FiltersID列表) 
options:规定包含标志/选项的数组。检查每个过滤器可能的标志和选项。 

示例代码:
function is_validemail($email) { $check = 0; if(filter_var($email,FILTER_VALIDATE_EMAIL)) { $check = 1; } return $check; }

FiltersID名称:描述
FILTER_CALLBACK:调用用户自定义函数来过滤数据。
FILTER_SANITIZE_STRING:去除标签,去除或编码特殊字符。
FILTER_SANITIZE_STRIPPED:"string" 过滤器的别名。
FILTER_SANITIZE_ENCODED:URL-encode 字符串,去除或编码特殊字符。
FILTER_SANITIZE_SPECIAL_CHARS:HTML 转义字符 '"<>& 以及 ASCII 值小于 32 的字符。
FILTER_SANITIZE_EMAIL:删除所有字符,除了字母、数字以及 !#$%&'*+-/=?^_{|}~@.[] FILTER_SANITIZE_URL:删除所有字符,除了字母、数字以及 $-_.+!*'(),{}|\\^~[]<>#%";/?:@&=
FILTER_SANITIZE_NUMBER_INT:删除所有字符,除了数字和 +-
FILTER_SANITIZE_NUMBER_FLOAT:删除所有字符,除了数字、+- 以及 .,eE。
FILTER_SANITIZE_MAGIC_QUOTES:应用 addslashes()。
FILTER_UNSAFE_RAW:不进行任何过滤,去除或编码特殊字符。
FILTER_VALIDATE_INT:在指定的范围以整数验证值。
FILTER_VALIDATE_BOOLEAN:如果是 "1", "true", "on" 以及 "yes",则返回 true,如果是 "0", "false", "off", "no" 以及 "",则返回 false。否则返回 NULL。
FILTER_VALIDATE_FLOAT:以浮点数验证值。
FILTER_VALIDATE_REGEXP:根据 regexp,兼容 Perl 的正则表达式来验证值。
FILTER_VALIDATE_URL:把值作为 URL 来验证。
FILTER_VALIDATE_EMAIL:把值作为 e-mail 来验证。
FILTER_VALIDATE_IP:把值作为 IP 地址来验证。


2.对获取用户的真实 IP 对$_SERVER[]的运用

实例代码:

function getRealIpAddr() { if (!emptyempty($_SERVER['HTTP_CLIENT_IP'])) { $ip=$_SERVER['HTTP_CLIENT_IP']; } elseif (!emptyempty($_SERVER['HTTP_X_FORWARDED_FOR'])) //to check ip is pass from proxy { $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; } else { $ip=$_SERVER['REMOTE_ADDR']; } return $ip; }

我们进一步开发,来阻止多个 IP 访问你的网站
if ( !file_exists('blocked_ips.txt') ) {
 $deny_ips = array(
  '127.0.0.1',
  '192.168.1.1',
  '83.76.27.9',
  '192.168.1.163'
 );
} else {
 $deny_ips = file('blocked_ips.txt');
}
// read user ip adress:
$ip = isset($_SERVER['REMOTE_ADDR']) ? trim($_SERVER['REMOTE_ADDR']) : '';

// search current IP in $deny_ips array
if ( (array_search($ip, $deny_ips))!== FALSE ) {
 // address is blocked:
 echo 'Your IP adress ('.$ip.') was blocked!';
 exit;
}

3.压缩成 zip 文件

实例代码:

function create_zip($files = array(),$destination = '',$overwrite = false) {  
//if the zip file already exists and overwrite is false, return false  
if(file_exists($destination) && !$overwrite) { return false; }  
//vars  
$valid_files = array();  
//if files were passed in...  
if(is_array($files)) {  
    //cycle through each file  
    foreach($files as $file) {  
        //make sure the file exists  
        if(file_exists($file)) {  
            $valid_files[] = $file;  
        }  
    }  
}  
//if we have good files...  
if(count($valid_files)) {  
    //create the archive  
    $zip = new ZipArchive();  
    if($zip->open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {  
        return false;  
    }  
    //add the files  
    foreach($valid_files as $file) {  
        $zip->addFile($file,$file);  
    }  
    //debug  
    //echo 'The zip archive contains ',$zip->numFiles,' files with a status of ',$zip->status;  

    //close the zip -- done!  
    $zip->close();  

    //check to make sure the file exists  
    return file_exists($destination);  
}  
else  
{  
    return false;  
}  

}

语法:
<?php $files=array('file1.jpg', 'file2.jpg', 'file3.gif'); create_zip($files, 'myzipfile.zip', true); ?>


4.缩放图片

function resize_image($filename, $tmpname, $xmax, $ymax)  
{  
$ext = explode(".", $filename);  
$ext = $ext[count($ext)-1];  

if($ext == "jpg" || $ext == "jpeg")  
    $im = imagecreatefromjpeg($tmpname);  
elseif($ext == "png")  
    $im = imagecreatefrompng($tmpname);  
elseif($ext == "gif")  
    $im = imagecreatefromgif($tmpname);  

$x = imagesx($im);  
$y = imagesy($im);  

if($x <= $xmax && $y <= $ymax)  
    return $im;  

if($x >= $y) {  
    $newx = $xmax;  
    $newy = $newx * $y / $x;  
}  
else {  
    $newy = $ymax;  
    $newx = $x / $y * $newy;  
}  

$im2 = imagecreatetruecolor($newx, $newy);  
imagecopyresized($im2, $im, 0, 0, 0, 0, floor($newx), floor($newy), $x, $y);  
return $im2;   
}

5.把秒转换成天数或小时数

function secsToStr($secs) {
if($secs>=86400){$days=floor($secs/86400);$secs=$secs%86400;$r=$days.' day';if($days<>1){$r.='s';}if($secs>0){$r.=', ';}}
if($secs>=3600){$hours=floor($secs/3600);$secs=$secs%3600;$r.=$hours.' hour';if($hours<>1){$r.='s';}if($secs>0){$r.=', ';}}
if($secs>=60){$minutes=floor($secs/60);$secs=$secs%60;$r.=$minutes.' minute';if($minutes<>1){$r.='s';}if($secs>0){$r.=', ';}}
$r.=$secs.' second';if($secs<>1){$r.='s';}
return $r;
}

6.根据url下载图片

function imagefromURL($image,$rename)
{
$ch = curl_init($image);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
$rawdata=curl_exec ($ch);
curl_close ($ch);
$fp = fopen("$rename",'w');
fwrite($fp, $rawdata); 
fclose($fp);
}

语法:
<?php $url = "http://koonk.com/images/logo.png"; $rename = "koonk.png"; imagefromURL($url,$rename); ?>


7.生成二维码

function qr_code($data, $type = "TXT", $size ='150', $ec='L', $margin='0')  
{
 $types = array("URL" =--> "http://", "TEL" => "TEL:", "TXT"=>"", "EMAIL" => "MAILTO:");
if(!in_array($type,array("URL", "TEL", "TXT", "EMAIL")))
{
    $type = "TXT";
}
if (!preg_match('/^'.$types[$type].'/', $data))
{
    $data = str_replace("\\", "", $types[$type]).$data;
}
$ch = curl_init();
$data = urlencode($data);
curl_setopt($ch, CURLOPT_URL, 'http://chart.apis.google.com/chart');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'chs='.$size.'x'.$size.'&cht=qr&chld='.$ec.'|'.$margin.'&chl='.$data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$response = curl_exec($ch);
curl_close($ch);
return $response;

}

语法:

<?php header("Content-type: image/png"); echo qr_code("http://koonk.com", "URL"); ?>


8.计算两个地图坐标之间的距离

function getDistanceBetweenPointsNew($latitude1, $longitude1, $latitude2, $longitude2) {
$theta = $longitude1 - $longitude2;
$miles = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2))) + (cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) * cos(deg2rad($theta)));
$miles = acos($miles);
$miles = rad2deg($miles);
$miles = $miles * 60 * 1.1515;
$feet = $miles * 5280;
$yards = $feet / 3;
$kilometers = $miles * 1.609344;
$meters = $kilometers * 1000;
return compact('miles','feet','yards','kilometers','meters'); 

}

语法:

<?php $point1 = array('lat' => 40.770623, 'long' => -73.964367); $point2 = array('lat' => 40.758224, 'long' => -73.917404); $distance = getDistanceBetweenPointsNew($point1['lat'], $point1['long'], $point2['lat'], $point2['long']); foreach ($distance as $unit => $value) { echo $unit.': '.number_format($value,4).'<br />'; } ?>

9.限制文件下载的速度

<?php
// local file that should be send to the client
$local_file = 'test-file.zip';
// filename that the user gets as default
$download_file = 'your-download-name.zip';

// set the download rate limit (=> 20,5 kb/s)
$download_rate = 20.5; 
if(file_exists($local_file) && is_file($local_file)) {
// send headers
header('Cache-control: private');
header('Content-Type: application/octet-stream'); 
header('Content-Length: '.filesize($local_file));
header('Content-Disposition: filename='.$download_file);

// flush content
flush();    
// open file stream
$file = fopen($local_file, "r");    
while(!feof($file)) {

    // send the current file part to the browser
    print fread($file, round($download_rate * 1024));    

    // flush the content to the browser
    flush();

    // sleep one second
    sleep(1);    
}    

// close file stream
fclose($file);}
else {
die('Error: The file '.$local_file.' does not exist!');
}
?>

相关文章

  • 九月四号

    PHP函数之内置函数 内置函数指的是PHP默认支持的函数,PHP内置了很多标准的常用的处理函数,包括字符串处理、数...

  • php不常用的内置函数运用

    1. 邮箱或者ip地址的验证 是对 filter_var 的运用 示例代码:function is_...

  • 三. PHP与MySQL关系大揭秘

    PHP内置MySQL函数学习(1) PHP内置MySQL函数学习(2) PHP内置MySQL函数学习(2)

  • PHP常用内置函数

    # 数组部分 # 1.## array_chunk($arr, $size [, $preserve_key = ...

  • PHP性能优化

    1 PHP语言级性能优化:少些代码,多用PHP自身能力;(多用PHP内置变量,常量,函数) PHP内置函数的性能不...

  • PHP常用的系统内置函数

    一、时间日期函数 (1)date() 格式化一个本地时间/日期 返回将整数 timestamp按照给定的格式字串而...

  • php性能优化

    一、php语言级性能优化 1.尽量使用php内置函数(内置函数之间依然存在快慢差异) 2.减少PHP魔法函...

  • Python精简入门学习(十一)

    Python精简入门学习之内置函数(上)-内置函数 -常用函数

  • 十一月第一周学习笔记(php)

    黑猫科技 张仰鹏 php内置的排序函数很多;正反各种排;常用的排序函数: sort() - 以升序对数组排序 rs...

  • 函数进阶_2

    目录 常用内置函数 匿名函数 高阶函数 闭包 装饰器 1. 常用内置函数 1.1 range()函数 语法:ran...

网友评论

      本文标题:php不常用的内置函数运用

      本文链接:https://www.haomeiwen.com/subject/gnxaattx.html