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, ); 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>" ; } |
作者:php_jiang 发表于2014-2-8 13:20:06 原文链接
阅读:31 评论:0 查看评论