本文小编将为你奉上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代码片段,还犹豫什么,果断收藏吧