19个超实用的PHP代码片段

 每位程序员和开发者都喜欢讨论他们最爱的代码片段,尤其是当PHP开发者花费数个小时为网页编码或创建应用时,他们更知道这些代码的重要性。为了节约编码时间,小编收集了一些较为实用的代码片段,帮助开发者提高工作效率

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."rn");  
        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
    '@<![sS]*?--[ tnr]*>@'         // 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>";   
}  
 

时间: 2024-10-26 11:02:19

19个超实用的PHP代码片段的相关文章

19个超实用的PHP代码片段_php实例

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',

超实用的PHP代码片段(一)

一.查看邮件是否已被阅读   当你在发送邮件时,你或许很想知道该邮件是否被对方已阅读.这里有段非常有趣的代码片段能够显示对方IP地址记录阅读的实际日期和时间.  view source print? 01.<? 02.error_reporting(0); 03.Header("Content-Type: image/jpeg"); 04.  05.//Get IP 06.if (!emptyempty($_SERVER['HTTP_CLIENT_IP'])) 07.{ 08.$

12个超实用的JQuery代码片段_jquery

本文收集了12段非常实用的jQuery代码片段,你可以直接复制黏贴到代码里,但请开发者注意了,要理解代码再使用哦.下面就让我们一起来享受jQuery代码的魅力之处吧. 1. 导航菜单背景切换效果 在项目的前端页面里,相对于其它的导航菜单,激活的导航菜单需要设置不同的背景.这种效果实现的方式有很多种,下面是使用JQuery实现的一种方式: <ul id='nav'> <li>导航一</li> <li>导航二</li> <li>导航三&l

6个超实用的PHP代码片段_php实例

一.黑名单过滤 function is_spam($text, $file, $split = ':', $regex = false){ $handle = fopen($file, 'rb'); $contents = fread($handle, filesize($file)); fclose($handle); $lines = explode("n", $contents); $arr = array(); foreach($lines as $line){ list($w

绝对不可错过的超实用HTML5代码片段

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 HTML5绝对是一个流行元素,受到如此多的公司组织的追捧,作为极客来说,岂能错过呢?在今天这篇文章中,我们将分享一些超实用的HTML5的代码片段,相信大家一定会喜欢! HTML5视频和fallback 实用HTML5的一个好处就是简化了视频和音频的嵌入代码量,不过呢,如何兼容老版本的浏览器绝对是一个令人头疼的问题,特别是在天朝,老版本的浏览器

7个有用的jQuery代码片段分享

  这篇文章主要介绍了7个有用的jQuery技巧分享,本文给出了在新窗口打开链接.设置等高的列.jQuery预加载图像.禁用鼠标右键.设定计时器等实用代码片段,需要的朋友可以参考下 jQuery是一款轻量级的JavaScript库,是最流行的客户端HTML脚本之一,它在WEB设计师和开发者中非常的有名,并且有非常多有用的插件和技术帮助WEB开发人员开发出有创意和漂亮的WEB页面. 今天我们为jQuery用户分享一些小技巧,这些技巧将帮助你提示你网站布局和应用的创意性和功能性. 一.在新窗口打开链

非常有用的50个CSS代码片段

原文:50 Useful CSS Snippets Every Designer Should Have          面对每年如此多的 新趋势 ,保持行业的领先是个很困难问题. 网站设计者和前端工程师都已经全面的使用 CSS3 properties, 决定这些的是 浏览器支持 和新的特性. 但是还是有些优秀的CSS2代码片段和CSS3一起运行中.       这篇文字里我会介绍 50 个便于使用的 CSS2/CSS3 代码片段 给所有的WEB专业人员. 选择IDE开发环境来存储这些是个不错

【经典源码收藏】jQuery实用代码片段(筛选,搜索,样式,清除默认值,多选等)_jquery

本文实例总结了jQuery实用代码片段.分享给大家供大家参考,具体如下: //each遍历文本框 清空默认值 $(".maincenterul1").find("input,textarea").each(function () { //保存当前文本框的值 var vdefault = this.value; $(this).focus(function () { if (this.value == vdefault) { this.value = "&q

php实用代码片段整理_php技巧

本文整理归纳了php实用代码片段.分享给大家供大家参考,具体如下: 一 从网页中提取关键词 $meta = get_meta_tags('http://www.jb51.net/'); $keywords = $meta['keywords']; // Split keywords $keywords = explode(',', $keywords ); // Trim them $keywords = array_map( 'trim', $keywords ); // Remove emp