本文小编将为你奉上10个超级有用的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>" ; } |
直接拿来用,10个PHP代码片段,还犹豫什么,果断收藏吧