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 相关文章推荐
杏林同学录(七)
Oct 09 PHP
PHP4实际应用经验篇(9)
Oct 09 PHP
PHP 面向对象实现代码
Nov 11 PHP
PHP正则的Unknown Modifier错误解决方法
Mar 02 PHP
ThinkPHP之用户注册登录留言完整实例
Jul 22 PHP
PHP高手需要要掌握的知识点
Aug 21 PHP
PHP中使用虚代理实现延迟加载技术
Nov 05 PHP
php获取用户浏览器版本的方法
Jan 03 PHP
浅析PHP中Session可能会引起并发问题
Jul 23 PHP
php生成验证码函数
Oct 20 PHP
关于PHP转换超过2038年日期出错的问题解决
Jun 28 PHP
Laravel Reponse响应客户端示例详解
Sep 03 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
动漫定律:眯眯眼都是怪物!这些角色狠话不多~
2020/03/03 日漫
锁定年轻人的双倍活力 星巴克推出星倍醇即饮浓咖啡
2021/03/03 咖啡文化
php 5.3.5安装memcache注意事项小结
2011/04/12 PHP
thinkphp中session和cookie无效的解决方法
2014/12/19 PHP
php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析
2020/04/20 PHP
js实现的网站首页随机公告随机公告
2007/03/14 Javascript
用js读、写、删除Cookie代码续篇
2014/12/03 Javascript
js 获取元素在页面上的偏移量的方法汇总
2015/04/13 Javascript
jQuery实现仿新浪微博浮动的消息提示框(可智能定位)
2015/10/10 Javascript
基于JavaScript代码实现随机漂浮图片广告
2016/01/05 Javascript
对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache详解
2016/04/11 Javascript
JS实现n秒后自动跳转的两种方法
2020/11/30 Javascript
js编写的treeview使用方法
2016/11/11 Javascript
jquery 禁止鼠标右键并监听右键事件
2017/04/27 jQuery
基于js中this和event 的区别(详解)
2017/10/24 Javascript
微信小程序 调用微信授权窗口相关问题解决
2019/07/25 Javascript
[01:14:05]《加油DOTA》第四期
2014/08/25 DOTA
Python中3种内建数据结构:列表、元组和字典
2014/11/30 Python
python数字图像处理之高级滤波代码详解
2017/11/23 Python
Python3之简单搭建自带服务器的实例讲解
2018/06/04 Python
详解Python数据可视化编程 - 词云生成并保存(jieba+WordCloud)
2019/03/26 Python
Python笔记之观察者模式
2019/11/20 Python
pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换
2020/01/13 Python
python快速安装OpenCV的步骤记录
2021/02/22 Python
美国在线肉类和海鲜配送:Crowd Cow
2020/10/02 全球购物
什么是虚拟内存?虚拟内存有什么优势?
2012/02/19 面试题
演讲稿怎么写才完美
2014/01/02 职场文书
简短大学毕业感言
2014/01/18 职场文书
3的组成教学反思
2014/04/30 职场文书
团结演讲稿范文
2014/05/23 职场文书
机关作风建设自查报告
2014/10/22 职场文书
乔迁之喜答谢词
2015/01/05 职场文书
党校毕业个人总结
2015/02/28 职场文书
2015年清明节网上祭英烈留言寄语
2015/03/04 职场文书
一篇文章弄懂Python关键字、标识符和变量
2021/07/15 Python
MySQL提取JSON字段数据实现查询
2022/04/22 MySQL