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 相关文章推荐
20个PHP常用类库小结
Sep 11 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十五)
Jun 30 PHP
destoon实现VIP排名一直在前面排序的方法
Aug 21 PHP
php分页函数完整实例代码
Sep 22 PHP
基于php的CMS中展示文章类实例分析
Jun 18 PHP
PHPExcel在linux环境下导出报500错误的解决方法
Jan 26 PHP
降低PHP Redis内存占用
Mar 23 PHP
基于PHP常用文件函数和目录函数整理
Aug 17 PHP
php微信公众号开发之二级菜单
Oct 20 PHP
解决在laravel中auth建立时候遇到的问题
Oct 15 PHP
php实现文件上传基本验证
Mar 04 PHP
PHP7 字符串处理机制修改
Mar 09 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开启安全模式后禁用的函数集合
2011/06/26 PHP
PHP保留两位小数并且四舍五入及不四舍五入的方法
2013/09/22 PHP
php发送http请求的常用方法分析
2016/11/08 PHP
php arsort 数组降序排序详细介绍
2016/11/17 PHP
PHP设计模式之装饰器模式实例详解
2018/02/07 PHP
jQuery.clean使用方法及思路分析
2013/01/07 Javascript
GRID拖拽行的实例代码
2013/07/18 Javascript
onkeyup,onkeydown和onkeypress的区别介绍
2013/10/21 Javascript
JS画线(实例代码)
2013/11/20 Javascript
Js与下拉列表处理问题解决
2014/02/13 Javascript
JS获取select的value和text值的简单实例
2014/02/26 Javascript
iframe子页面与父页面在同域或不同域下的js通信
2014/05/07 Javascript
javascript HTML5文件上传FileReader API
2020/03/27 Javascript
jquery实现一个全局计时器(商城可用)
2017/06/30 jQuery
微信小程序时间控件picker view使用详解
2018/12/28 Javascript
解决vue-router 二级导航默认选中某一选项的问题
2019/11/01 Javascript
[28:48]《真视界》- 2017年国际邀请赛
2017/09/27 DOTA
教你用Python创建微信聊天机器人
2020/03/31 Python
Python补齐字符串长度的实例
2018/11/15 Python
浅谈Pandas:Series和DataFrame间的算术元素
2018/12/22 Python
Python实现的矩阵转置与矩阵相乘运算示例
2019/03/26 Python
python pygame实现五子棋小游戏
2020/10/26 Python
Python 文件操作之读取文件(read),文件指针与写入文件(write),文件打开方式示例
2019/09/29 Python
python 中的paramiko模块简介及安装过程
2020/02/29 Python
windows、linux下打包Python3程序详细方法
2020/03/17 Python
Python生成器next方法和send方法区别详解
2020/05/30 Python
佳能法国商店:Canon法国
2019/02/14 全球购物
GUESS Factory加拿大:牛仔裤、服装及配饰
2019/09/20 全球购物
Python使用openpyxl复制整张sheet
2021/03/24 Python
函授毕业自我鉴定
2013/12/19 职场文书
国际贸易专业个人职业生涯规划
2014/02/15 职场文书
公司活动总结怎么写
2014/06/25 职场文书
2015年大学班长个人工作总结
2015/04/24 职场文书
公司员工辞职信范文
2015/05/12 职场文书
2015年教师见习期工作总结
2015/05/20 职场文书
Pycharm连接远程服务器并远程调试的全过程
2021/06/24 Python