19个超实用的PHP代码片段


Posted in PHP onMarch 14, 2014

1) Whois query using PHP ——利用PHP获取Whois请求

利用这段代码,在特定的域名里可获得whois信息。把域名名称作为参数,并显示所有域名的相关信息。

function whois_query($domain) {      // fix the domain name:  
    $domain = strtolower(trim($domain));  
    $domain = preg_replace('/^http:\/\//i', '', $domain);  
    $domain = preg_replace('/^www\./i', '', $domain);  
    $domain = explode('/', $domain);  
    $domain = trim($domain[0]);  
    // split the TLD from domain name  
    $_domain = explode('.', $domain);  
    $lst = count($_domain)-1;  
    $ext = $_domain[$lst];  
    // You find resources and lists   
    // like these on wikipedia:   
    //  
    // <a href="http://de.wikipedia.org/wiki/Whois">http://de.wikipedia.org/wiki/Whois</a>  
    //  
    $servers = array(  
        "biz" => "whois.neulevel.biz",  
        "com" => "whois.internic.net",  
        "us" => "whois.nic.us",  
        "coop" => "whois.nic.coop",  
        "info" => "whois.nic.info",  
        "name" => "whois.nic.name",  
        "net" => "whois.internic.net",  
        "gov" => "whois.nic.gov",  
        "edu" => "whois.internic.net",  
        "mil" => "rs.internic.net",  
        "int" => "whois.iana.org",  
        "ac" => "whois.nic.ac",  
        "ae" => "whois.uaenic.ae",  
        "at" => "whois.ripe.net",  
        "au" => "whois.aunic.net",  
        "be" => "whois.dns.be",  
        "bg" => "whois.ripe.net",  
        "br" => "whois.registro.br",  
        "bz" => "whois.belizenic.bz",  
        "ca" => "whois.cira.ca",  
        "cc" => "whois.nic.cc",  
        "ch" => "whois.nic.ch",  
        "cl" => "whois.nic.cl",  
        "cn" => "whois.cnnic.net.cn",  
        "cz" => "whois.nic.cz",  
        "de" => "whois.nic.de",  
        "fr" => "whois.nic.fr",  
        "hu" => "whois.nic.hu",  
        "ie" => "whois.domainregistry.ie",  
        "il" => "whois.isoc.org.il",  
        "in" => "whois.ncst.ernet.in",  
        "ir" => "whois.nic.ir",  
        "mc" => "whois.ripe.net",  
        "to" => "whois.tonic.to",  
        "tv" => "whois.tv",  
        "ru" => "whois.ripn.net",  
        "org" => "whois.pir.org",  
        "aero" => "whois.information.aero",  
        "nl" => "whois.domain-registry.nl"  
    );  
    if (!isset($servers[$ext])){  
        die('Error: No matching nic server found!');  
    }  
    $nic_server = $servers[$ext];  
    $output = '';  
    // connect to whois server:  
    if ($conn = fsockopen ($nic_server, 43)) {  
        fputs($conn, $domain."\r\n");  
        while(!feof($conn)) {  
            $output .= fgets($conn,128);  
        }  
        fclose($conn);  
    }  
    else { die('Error: Could not connect to ' . $nic_server . '!'); }  
    return $output;  
} 

2) Text messaging with PHP using the TextMagic API ——使用TextMagic API 获取PHP Test信息

TextMagic引入强大的核心API,可轻松将SMS发送到手机。该API是需要付费。

the TextMagic PHP lib  
require('textmagic-sms-api-php/TextMagicAPI.php');  // Set the username and password information  
$username = 'myusername';  
$password = 'mypassword';  
// Create a new instance of TM  
$router = new TextMagicAPI(array(  
    'username' => $username,  
    'password' => $password  
));  
// Send a text message to '999-123-4567'  
$result = $router->send('Wake up!', array(9991234567), true);  
// result:  Result is: Array ( [messages] => Array ( [19896128] => 9991234567 ) [sent_text] => Wake up! [parts_count] => 1 ) 

3) Get info about your memory usage——获取内存使用率

这段代码帮助你获取内存使用率。

echo "Initial: ".memory_get_usage()." bytes \n";  
/* prints 
Initial: 361400 bytes 
*/  // let's use up some memory  
for ($i = 0; $i < 100000; $i++) {  
    $array []= md5($i);  
}  
// let's remove half of the array  
for ($i = 0; $i < 100000; $i++) {  
    unset($array[$i]);  
}  
echo "Final: ".memory_get_usage()." bytes \n";  
/* prints 
Final: 885912 bytes 
*/  
echo "Peak: ".memory_get_peak_usage()." bytes \n";  
/* prints 
Peak: 13687072 bytes 
*/ 

4) Display source code of any webpage——查看任意网页源代码

如果你想查看网页源代码,那么只需更改第二行的URL,源代码就会在网页上显示出。

<?php // display source code $lines = file('http://google.com/'); foreach ($lines as $line_num => $line) {   
    // loop thru each line and prepend line numbers  
    echo "Line #{$line_num} : " . htmlspecialchars($line) . "  
\n";  
} 

5) Create data uri's——创建数据uri

通过使用此代码,你可以创建数据Uri,这对在HTML/CSS中嵌入图片非常有用,可帮助节省HTTP请求。

function data_uri($file, $mime) {  
  $contents=file_get_contents($file);  
  $base64=base64_encode($contents);  
  echo "data:$mime;base64,$base64";  
}

6) Detect location by IP——通过IP检索出地理位置

这段代码帮助你查找特定的IP,只需在功能参数上输入IP,就可检测出位置。

function detect_city($ip) {          $default = 'UNKNOWN';  
        if (!is_string($ip) || strlen($ip) < 1 || $ip == '127.0.0.1' || $ip == 'localhost')             $ip = '8.8.8.8';         $curlopt_useragent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)';                  $url = 'http://ipinfodb.com/ip_locator.php?ip=' . urlencode($ip);         $ch = curl_init();                  $curl_opt = array(             CURLOPT_FOLLOWLOCATION  => 1,  
            CURLOPT_HEADER      => 0,  
            CURLOPT_RETURNTRANSFER  => 1,  
            CURLOPT_USERAGENT   => $curlopt_useragent,  
            CURLOPT_URL       => $url,  
            CURLOPT_TIMEOUT         => 1,  
            CURLOPT_REFERER         => 'http://' . $_SERVER['HTTP_HOST'],  
        );  
        curl_setopt_array($ch, $curl_opt);  
        $content = curl_exec($ch);  
        if (!is_null($curl_info)) {  
            $curl_info = curl_getinfo($ch);  
        }  
        curl_close($ch);  
        if ( preg_match('{  
City : ([^<]*)  
}i', $content, $regs) ) { $city = $regs[1]; } if ( preg_match(‘{  
State/Province : ([^<]*)  
}i', $content, $regs) ) { $state = $regs[1]; } if( $city!=” && $state!=” ){ $location = $city . ‘, ‘ . $state; return $location; }else{ return $default; } } 

7) Detect browser language——查看浏览器语言

检测浏览器使用的代码脚本语言。

function get_client_language($availableLanguages, $default='en'){  
    if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {  
        $langs=explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']);          foreach ($langs as $value){  
            $choice=substr($value,0,2);  
            if(in_array($choice, $availableLanguages)){  
                return $choice;  
            }  
        }  
    }   
    return $default;  
} 

8) Check if server is HTTPS——检测服务器是否是HTTPS
if ($_SERVER['HTTPS'] != "on") {   
    echo "This is not HTTPS";  
}else{  
    echo "This is HTTPS";  
} 

9) Generate CSV file from a PHP array——在PHP数组中生成.csv 文件
function generateCsv($data, $delimiter = ',', $enclosure = '"') {  
   $handle = fopen('php://temp', 'r+');  
   foreach ($data as $line) {  
           fputcsv($handle, $line, $delimiter, $enclosure);  
   }  
   rewind($handle);  
   while (!feof($handle)) {  
           $contents .= fread($handle, 8192);  
   }  
   fclose($handle);  
   return $contents;  
} 

10.查找Longitudes与Latitudes之间的距离

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');   
}  $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).'  
';  
}

The example returns the following: 

miles: 2.6025  
feet: 13,741.4350  
yards: 4,580.4783  
kilometers: 4.1884  
meters: 4,188.3894

11.完善cURL功能

function xcurl($url,$ref=null,$post=array(),$ua="Mozilla/5.0 (X11; Linux x86_64; rv:2.2a1pre) Gecko/20110324 Firefox/4.2a1pre",$print=false) {  
    $ch = curl_init();  
    curl_setopt($ch, CURLOPT_AUTOREFERER, true);  
    if(!empty($ref)) {  
        curl_setopt($ch, CURLOPT_REFERER, $ref);  
    }  
    curl_setopt($ch, CURLOPT_URL, $url);  
    curl_setopt($ch, CURLOPT_HEADER, 0);  
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);  
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
    if(!empty($ua)) {  
        curl_setopt($ch, CURLOPT_USERAGENT, $ua);  
    }  
    if(count($post) > 0){  
        curl_setopt($ch, CURLOPT_POST, 1);  
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post);      
    }  
    $output = curl_exec($ch);  
    curl_close($ch);  
    if($print) {  
        print($output);  
    } else {  
        return $output;  
    }  
}

12.清理用户输入
<?php
function cleanInput($input) {  $search = array(
    '@<script[^>]*?>.*?</script>@si',   // Strip out javascript
    '@<[\/\!]*?[^<>]*?>@si',            // Strip out HTML tags
    '@<style[^>]*?>.*?</style>@siU',    // Strip style tags properly
    '@<![\s\S]*?--[ \t\n\r]*>@'         // Strip multi-line comments
  );
    $output = preg_replace($search, '', $input);
    return $output;
  }
?>
<?php
function sanitize($input) {
    if (is_array($input)) {
        foreach($input as $var=>$val) {
            $output[$var] = sanitize($val);
        }
    }
    else {
        if (get_magic_quotes_gpc()) {
            $input = stripslashes($input);
        }
        $input  = cleanInput($input);
        $output = mysql_real_escape_string($input);
    }
    return $output;
}
?>

13.通过IP(城市、国家)检测地理位置
function detect_city($ip) {          $default = 'Hollywood, CA';  
        if (!is_string($ip) || strlen($ip) < 1 || $ip == '127.0.0.1' || $ip == 'localhost')             $ip = '8.8.8.8';           $curlopt_useragent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)';           $url = 'http://ipinfodb.com/ip_locator.php?ip=' . urlencode($ip);         $ch = curl_init();           $curl_opt = array(             CURLOPT_FOLLOWLOCATION  => 1,  
            CURLOPT_HEADER      => 0,  
            CURLOPT_RETURNTRANSFER  => 1,  
            CURLOPT_USERAGENT   => $curlopt_useragent,  
            CURLOPT_URL       => $url,  
            CURLOPT_TIMEOUT         => 1,  
            CURLOPT_REFERER         => 'http://' . $_SERVER['HTTP_HOST'],  
        );  
        curl_setopt_array($ch, $curl_opt);  
        $content = curl_exec($ch);  
        if (!is_null($curl_info)) {  
            $curl_info = curl_getinfo($ch);  
        }  
        curl_close($ch);  
        if ( preg_match('{  
      
City : ([^<]*)  
}i', $content, $regs) ) { $city = $regs[1]; } if ( preg_match('{  
State/Province : ([^<]*)  
}i', $content, $regs) ) { $state = $regs[1]; } if( $city!='' && $state!='' ){ $location = $city . ', ' . $state; return $location; }else{ return $default; } } 

14.设置密码强度
function password_strength($string){ 
    $h    = 0; 
    $size = strlen($string); 
    foreach(count_chars($string, 1) as $v){ 
        $p = $v / $size; 
        $h -= $p * log($p) / log(2); 
    } 
    $strength = ($h / 4) * 100; 
    if($strength > 100){ 
        $strength = 100; 
    } 
    return $strength; 
} 
var_dump(password_strength("Correct Horse Battery Staple")); 
echo "<br>"; 
var_dump(password_strength("Super Monkey Ball")); 
echo "<br>"; 
var_dump(password_strength("Tr0ub4dor&3")); 
echo "<br>"; 
var_dump(password_strength("abc123")); 
echo "<br>"; 
var_dump(password_strength("sweet"));

15.检测浏览器语言,只提供可用的$availableLanguages作为数组(‘en', ‘de', ‘es')
function get_client_language($availableLanguages, $default='en'){      if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {  
        $langs=explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']);  
        //start going through each one  
        foreach ($langs as $value){  
            $choice=substr($value,0,2);  
            if(in_array($choice, $availableLanguages)){  
                return $choice;  
            }  
        }  
    }   
    return $default;  
}

16.创建数据URL

function data_uri($file, $mime) {  
  $contents=file_get_contents($file);  
  $base64=base64_encode($contents);  
  echo "data:$mime;base64,$base64";  
}

17.创建更加友好的页面标题SEO URL

输入示例:$title = “This foo's bar is rockin' cool!”; echo makeseoname($title); //RETURNS: //this-foos-bar-is-rockin-cool

function make_seo_name($title) {  
    return preg_replace('/[^a-z0-9_-]/i', '', strtolower(str_replace(' ', '-', trim($title))));  
}

18.终极加密功能
// f(ucking) u(ncrackable) e(ncryption) function by BlackHatDBL (www.netforme.net)  
function fue($hash,$times) {  
    // Execute the encryption(s) as many times as the user wants  
    for($i=$times;$i>0;$i--) {  
        // Encode with base64...  
        $hash=base64_encode($hash);  
        // and md5...  
        $hash=md5($hash);  
        // sha1...  
        $hash=sha1($hash);  
        // sha256... (one more)  
        $hash=hash("sha256", $hash);  
        // sha512  
        $hash=hash("sha512", $hash);      }  
    // Finaly, when done, return the value  
    return $hash;  
}

19a.Tweeter Feed Runner——使用任意twitter名,可在任意页面上加载用户资源。
  
    public function loadTimeline($user, $max = 20){   
        $this->twitURL .= 'statuses/user_timeline.xml?screen_name='.$user.'&count='.$max;   
        $ch        = curl_init();   
        curl_setopt($ch, CURLOPT_URL, $this->twitURL);   
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);   
        $this->xml = curl_exec($ch);   
        return $this;   
    }   
    public function getTweets(){   
        $this->twitterArr = $this->getTimelineArray();   
        $tweets = array();   
        foreach($this->twitterArr->status as $status){   
            $tweets[$status->created_at->__toString()] = $status->text->__toString();   
        }   
        return $tweets;   
    }   
    public function getTimelineArray(){   
        return simplexml_load_string($this->xml);   
    }   
    public function formatTweet($tweet){   
        $tweet = preg_replace("/(http(.+?))( |$)/","$1$3", $tweet);   
        $tweet = preg_replace("/#(.+?)(\h|\W|$)/", "#$1$2", $tweet);   
        $tweet = preg_replace("/@(.+?)(\h|\W|$)/", "@$1$2", $tweet);   
        return $tweet;   
    }  

19b. Tweeter Feed Runner——用于在主题中创建文件,比如:example.php
loadTimeline("phpsnips")->getTweets();   
foreach($feed as $time => $message){   
    echo "<div class='tweet'>".$twitter->formatTweet($message)."<br />At: ".$time."</div>";   
} 
PHP 相关文章推荐
一个PHP日历程序
Dec 06 PHP
PHP读取数据库并按照中文名称进行排序实现代码
Jan 29 PHP
php多种形式发送邮件(mail qmail邮件系统 phpmailer类)
Jan 22 PHP
PHP程序漏洞产生的原因分析与防范方法说明
Mar 06 PHP
PHP开发注意事项总结
Feb 04 PHP
ThinkPHP在Cli模式下使用模板引擎的方法
Sep 25 PHP
php设计模式之单例模式代码
Jun 11 PHP
PHP+Ajax异步带进度条上传文件实例
Nov 01 PHP
php微信公众号开发模式详解
Nov 28 PHP
php生成0~1随机小数的方法(必看)
Apr 05 PHP
PHP 7.1中AES加解密方法mcrypt_module_open()的替换方案
Oct 17 PHP
PHP7内核CGI与FastCGI详解
Apr 14 PHP
php的zip解压缩类pclzip使用示例
Mar 14 #PHP
php多功能图片处理类分享(php图片缩放类)
Mar 14 #PHP
zf框架db类的分页示例分享
Mar 14 #PHP
zf框架的db类select查询器join链表使用示例(zend框架)
Mar 14 #PHP
zf框架的zend_cache缓存使用方法(zend框架)
Mar 14 #PHP
php实现天干地支计算器示例
Mar 14 #PHP
PHP判断指定时间段的2个方法
Mar 14 #PHP
You might like
php zlib压缩和解压缩swf文件的代码
2008/12/30 PHP
php设计模式 Command(命令模式)
2011/06/26 PHP
php使用sql数据库 获取字段问题介绍
2013/08/12 PHP
利用php实现一周之内自动登录存储机制(cookie、session、localStorage)
2016/10/31 PHP
js资料prototype 属性
2007/03/13 Javascript
JavaScript代码复用模式实例分析
2012/12/02 Javascript
JavaScript将相对地址转换为绝对地址示例代码
2013/07/19 Javascript
在javascript中实现函数数组的方法
2013/12/25 Javascript
在Node.js中使用HTTP上传文件的方法
2015/06/23 Javascript
jQuery动态添加及删除表单上传元素的方法(附demo源码下载)
2016/01/15 Javascript
理解JavaScript表单的基础知识
2016/01/25 Javascript
JS模态窗口返回值兼容问题的完美解决方法
2016/05/28 Javascript
js获取当前时间(昨天、今天、明天)
2016/11/23 Javascript
基于vue的换肤功能的示例代码
2017/10/10 Javascript
手机注册发送验证码倒计时的简单实例
2017/11/15 Javascript
浅谈laytpl 模板空值显示null的解决方法及简单的js表达式
2019/09/19 Javascript
详解Webpack4多页应用打包方案
2020/07/16 Javascript
Vue双向数据绑定(MVVM)的原理
2020/10/03 Javascript
Python 开发Activex组件方法
2009/11/08 Python
python pdb调试方法分享
2014/01/21 Python
django 自定义用户user模型的三种方法
2014/11/18 Python
python随机生成指定长度密码的方法
2015/04/04 Python
python将unicode转为str的方法
2017/06/21 Python
Python基于动态规划算法解决01背包问题实例
2017/12/06 Python
学习Python3 Dlib19.7进行人脸面部识别
2018/01/24 Python
Python实现调用另一个路径下py文件中的函数方法总结
2018/06/07 Python
Python基于最小二乘法实现曲线拟合示例
2018/06/14 Python
Django之Mode的外键自关联和引用未定义的Model方法
2018/12/15 Python
int在python中的含义以及用法
2019/06/27 Python
python 装饰器的实际作用有哪些
2020/09/07 Python
师范生教师实习自我鉴定
2013/09/27 职场文书
幼师求职自荐信范文
2014/01/26 职场文书
捐款倡议书范文
2014/02/02 职场文书
银行金融服务方案
2014/06/11 职场文书
2015年全国爱眼日活动方案
2015/05/05 职场文书
银行客户经理培训心得体会
2016/01/09 职场文书