PHP代码片段

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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

  源码

  2.完善cURL功能

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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 ;
     }
}

  源码

  3.清理用户输入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
]*?>.*?@si',   // Strip out javascript
     '@<[\/\!]*?[^<>]*?>@si' ,            // Strip out HTML tags
     '@]*?>.*?@siU' ,    // Strip style tags properly
     '@@'         // Strip multi-line comments
   );
 
     $output = preg_replace( $search , '' , $input );
     return $output ;
   }
?>
$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 ;
}
?>

  源码

  4.通过IP(城市、国家)检测地理位置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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 ; } }

  源码

  5.设置密码强度

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
100){
         $strength = 100;
     }
     return $strength ;
}
 
var_dump(password_strength( "Correct Horse Battery Staple" ));
echo "
";
var_dump(password_strength( "Super Monkey Ball" ));
echo "
";
var_dump(password_strength( "Tr0ub4dor&3" ));
echo "
";
var_dump(password_strength( "abc123" ));
echo "
";
var_dump(password_strength( "sweet" ));

  源码

  6.检测浏览器语言,只提供可用的$availableLanguages作为数组(‘en’, ‘de’, ‘es’)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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 ;
}

  源码

  7.创建数据URL

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

  源码

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

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

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

  源码

  9.终极加密功能

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// 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 ;
}

  源码

  10a.Tweeter Feed Runner——使用任意twitter名,可在任意页面上加载用户资源。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
pversion;
     }
     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 ;
     }
}

  10b. Tweeter Feed Runner——用于在主题中创建文件,比如:example.php

1
2
3
4
loadTimeline( "phpsnips" )->getTweets();
foreach ( $feed as $time => $message ){
     echo "<div class='tweet'>" . $twitter ->formatTweet( $message ). "<br />At: " . $time . "</div>" ;
}

  源码


 一、查看邮件是否已被阅读

  当你在发送邮件时,你或许很想知道该邮件是否被对方已阅读。这里有段非常有趣的代码片段能够显示对方IP地址记录阅读的实际日期和时间。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?
error_reporting (0);
Header( "Content-Type: image/jpeg" );
 
//Get IP
if (! empty ( $_SERVER [ 'HTTP_CLIENT_IP' ]))
{
   $ip = $_SERVER [ 'HTTP_CLIENT_IP' ];
}
elseif (! empty ( $_SERVER [ 'HTTP_X_FORWARDED_FOR' ]))
{
   $ip = $_SERVER [ 'HTTP_X_FORWARDED_FOR' ];
}
else
{
   $ip = $_SERVER [ 'REMOTE_ADDR' ];
}
 
//Time
$actual_time = time();
$actual_day = date ( 'Y.m.d' , $actual_time );
$actual_day_chart = date ( 'd/m/y' , $actual_time );
$actual_hour = date ( 'H:i:s' , $actual_time );
 
//GET Browser
$browser = $_SERVER [ 'HTTP_USER_AGENT' ];
     
//LOG
$myFile = "log.txt" ;
$fh = fopen ( $myFile , 'a+' );
$stringData = $actual_day . ' ' . $actual_hour . ' ' . $ip . ' ' . $browser . ' ' . "\r\n" ;
fwrite( $fh , $stringData );
fclose( $fh );
 
//Generate Image (Es. dimesion is 1x1)
$newimage = ImageCreate(1,1);
$grigio = ImageColorAllocate( $newimage ,255,255,255);
ImageJPEG( $newimage );
ImageDestroy( $newimage );
     
?>

  源码

  二、从网友中提取关键字

  一段伟大的代码片段能够轻松的从网页中提取关键字。

1
2
3
4
5
6
7
8
9
10
$meta = get_meta_tags( 'http://www.emoticode.net/' );
$keywords = $meta [ 'keywords' ];
// Split keywords
$keywords = explode ( ',' , $keywords );
// Trim them
$keywords = array_map ( 'trim' , $keywords );
// Remove empty values
$keywords = array_filter ( $keywords );
 
print_r( $keywords );

  源码

  三、查找页面上的所有链接

  使用DOM,你可以轻松从任何页面上抓取链接,代码示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$html = file_get_contents ( 'http://www.example.com' );
 
$dom = new DOMDocument();
@ $dom ->loadHTML( $html );
 
// grab all the on the page
$xpath = new DOMXPath( $dom );
$hrefs = $xpath ->evaluate( "/html/body//a" );
 
for ( $i = 0; $i < $hrefs ->length; $i ++) {
        $href = $hrefs ->item( $i );
        $url = $href ->getAttribute( 'href' );
        echo $url . '<br />' ;
}

  源码

  四、自动转换URL,跳转至超链接

  在WordPress中,如果你想自动转换URL,跳转至超链接页面,你可以利用内置的函数make_clickable()执行此操作。如果你想基于WordPress之外操作该程序,那么你可以参考wp-includes/formatting.php源代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
function _make_url_clickable_cb( $matches ) {
     $ret = '' ;
     $url = $matches [2];
  
     if ( empty ( $url ) )
         return $matches [0];
     // removed trailing [.,;:] from URL
     if ( in_array( substr ( $url , -1), array ( '.' , ',' , ';' , ':' )) === true ) {
         $ret = substr ( $url , -1);
         $url = substr ( $url , 0, strlen ( $url )-1);
     }
     return $matches [1] . "<a href=\"$url\" rel=\"nofollow\">$url</a>" . $ret ;
}
  
function _make_web_ftp_clickable_cb( $matches ) {
     $ret = '' ;
     $dest = $matches [2];
     $dest = 'http://' . $dest ;
  
     if ( empty ( $dest ) )
         return $matches [0];
     // removed trailing [,;:] from URL
     if ( in_array( substr ( $dest , -1), array ( '.' , ',' , ';' , ':' )) === true ) {
         $ret = substr ( $dest , -1);
         $dest = substr ( $dest , 0, strlen ( $dest )-1);
     }
     return $matches [1] . "<a href=\"$dest\" rel=\"nofollow\">$dest</a>" . $ret ;
}
  
function _make_email_clickable_cb( $matches ) {
     $email = $matches [2] . '@' . $matches [3];
     return $matches [1] . "<a href=\"mailto:$email\">$email</a>" ;
}
  
function make_clickable( $ret ) {
     $ret = ' ' . $ret ;
     // in testing, using arrays here was found to be faster
     $ret = preg_replace_callback( '#([\s>])([\w]+?://[\w\\x80-\\xff\#$%&~/.\-;:=,?@\[\]+]*)#is' , '_make_url_clickable_cb' , $ret );
     $ret = preg_replace_callback( '#([\s>])((www|ftp)\.[\w\\x80-\\xff\#$%&~/.\-;:=,?@\[\]+]*)#is' , '_make_web_ftp_clickable_cb' , $ret );
     $ret = preg_replace_callback( '#([\s>])([.0-9a-z_+-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,})#i' , '_make_email_clickable_cb' , $ret );
  
     // this one is not in an array because we need it to run last, for cleanup of accidental links within links
     $ret = preg_replace( "#(<a( [^>]+?>|>))<a [^>]+?>([^>]+?)</a></a>#i" , "$1$3</a>" , $ret );
     $ret = trim( $ret );
     return $ret ;
}

  源码

  五、创建数据URL

  数据URL可以直接嵌入到HTML/CSS/JS中,以节省大量的 HTTP请求。 下面的这段代码可利用$file轻松创建数据URL。

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

  源码

  六、从服务器上下载&保存一个远程图片 

  当你在搭建网站时,从远程服务器下载某张图片并且将其保存在自己的服务器上,这一操作会经常用到。代码如下:

1
2
$image = file_get_contents ( 'http://www.url.com/image.jpg' );
file_put_contents ( '/images/image.jpg' , $image ); //Where to save the image

  源码

  七、移除Remove Microsoft Word HTML Tag

  当你使用Microsoft Word会创建许多Tag,比如font,span,style,class等。这些标签对于Word本身而言是非常有用的,但是当你从Word粘贴至网页时,你会发现很多无用的Tag。因此,下面的这段代码可帮助你删除所有无用的Word HTML Tag。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function cleanHTML( $html ) {
/// <summary>
/// Removes all FONT and SPAN tags, and all Class and Style attributes.
/// Designed to get rid of non-standard Microsoft Word HTML tags.
/// </summary>
// start by completely removing all unwanted tags
 
$html = ereg_replace ( "<(/)?(font|span|del|ins)[^>]*>" , "" , $html );
 
// then run another pass over the html (twice), removing unwanted attributes
 
$html = ereg_replace ( "<([^>]*)(class|lang|style|size|face)=(" [^ "]*" | '[^' ]*'|[^>]+)([^>]*)> "," <\1>", $html );
$html = ereg_replace ( "<([^>]*)(class|lang|style|size|face)=(" [^ "]*" | '[^' ]*'|[^>]+)([^>]*)> "," <\1>", $html );
 
return $html
}

  源码

  八、检测浏览器语言

  如果你的网站上有多种语言,那么可以使用这段代码作为默认的语言来检测浏览器语言。该段代码将返回浏览器客户端使用的初始语言。

1
2
3
4
5
6
7
8
9
10
11
12
13
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 ;
}

  源码

  九、显示Facebook 粉丝数量

  如果你的网站或者博客上有内链的Facebook页面,你或许想知道拥有多少粉丝。这段代码将帮助你查看Facebook粉丝数,记住,别忘了在你的页面ID第二行添加该段代码。

1
2
3
4
5
6
<?php
     $page_id = "YOUR PAGE-ID" ;
     $fans = $xml ->page->fan_count;
     echo $fans ;
?>

  源码


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值