# 直接拿来用 10个PHP代码片段

• A+

PHP是一种HTML内嵌式的语言，是一种在服务器端执行的嵌入HTML文档的脚本语言。PHP拥有数以百计的基本功能，支持上千种扩展。这些功能都被很好的加载在PHP站点上，但内置的库有各种各样的命名。在PHP代码库中包含了无数个有用的PHP代码片段，每位开发者都需要不断完善自己的“工具箱”。有了这些代码片段可以为你节省大量的时间，一起来看下。

1.查找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```

2.完善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;
}
}```

3.清理用户输入

```]*?>.*[email protected]',   // Strip out javascript
'@<[\/\!]*?[^<>]*?>@si',            // Strip out HTML tags
'@]*?>.*[email protected]',    // 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（城市、国家）检测地理位置

```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.设置密码强度

``` 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’)

```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

```function data_uri(\$file, \$mime) {
\$contents=file_get_contents(\$file);
\$base64=base64_encode(\$contents);
echo "data:\$mime;base64,\$base64";
}```

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

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

9.终极加密功能

```// 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名，可在任意页面上加载用户资源。

```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

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

英文出自：Codegeekz

• 我的微信
• 这是我的微信扫一扫
• 我的微信公众号
• 我的微信公众号扫一扫