19个超实用的PHP代码片段
2014-08-22来源:易贤网

每位程序员和开发者都喜欢讨论他们最爱的代码片段,尤其是当PHP开发者花费数个小时为网页编码或创建应用时,他们更知道这些代码的重要性。为了节约编码时间,小编收集了一些较为实用的代码片段,帮助开发者提高工作效率

1) Whois query using PHP ——利用PHP获取Whois请求

利用这段代码,在特定的域名里可获得whois信息。把域名名称作为参数,并显示所有域名的相关信息。

代码如下:

function whois_query($domain) {

// fix the domain name:

$domain = strtolower(trim($domain));

$domain = preg_replace('/^http:///i', '', $domain);

$domain = preg_replace('/^www./i', '', $domain);

$domain = explode('/', $domain);

$domain = trim($domain[0]);

// split the TLD from domain name

$_domain = explode('.', $domain);

$lst = count($_domain)-1;

$ext = $_domain[$lst];

// You find resources and lists

// like these on wikipedia:

//

// <a href="http://de.wikipedia.org/wiki/Whois">http://de.wikipedia.org/wiki/Whois</a>

//

$servers = array(

"biz" => "whois.neulevel.biz",

"com" => "whois.internic.net",

"us" => "whois.nic.us",

"coop" => "whois.nic.coop",

"info" => "whois.nic.info",

"name" => "whois.nic.name",

"net" => "whois.internic.net",

"gov" => "whois.nic.gov",

"edu" => "whois.internic.net",

"mil" => "rs.internic.net",

"int" => "whois.iana.org",

"ac" => "whois.nic.ac",

"ae" => "whois.uaenic.ae",

"at" => "whois.ripe.net",

"au" => "whois.aunic.net",

"be" => "whois.dns.be",

"bg" => "whois.ripe.net",

"br" => "whois.registro.br",

"bz" => "whois.belizenic.bz",

"ca" => "whois.cira.ca",

"cc" => "whois.nic.cc",

"ch" => "whois.nic.ch",

"cl" => "whois.nic.cl",

"cn" => "whois.cnnic.net.cn",

"cz" => "whois.nic.cz",

"de" => "whois.nic.de",

"fr" => "whois.nic.fr",

"hu" => "whois.nic.hu",

"ie" => "whois.domainregistry.ie",

"il" => "whois.isoc.org.il",

"in" => "whois.ncst.ernet.in",

"ir" => "whois.nic.ir",

"mc" => "whois.ripe.net",

"to" => "whois.tonic.to",

"tv" => "whois.tv",

"ru" => "whois.ripn.net",

"org" => "whois.pir.org",

"aero" => "whois.information.aero",

"nl" => "whois.domain-registry.nl"

);

if (!isset($servers[$ext])){

die('Error: No matching nic server found!');

}

$nic_server = $servers[$ext];

$output = '';

// connect to whois server:

if ($conn = fsockopen ($nic_server, 43)) {

fputs($conn, $domain."rn");

while(!feof($conn)) {

$output .= fgets($conn,128);

}

fclose($conn);

}

else { die('Error: Could not connect to ' . $nic_server . '!'); }

return $output;

}

2) Text messaging with PHP using the TextMagic API ——使用TextMagic API 获取PHP Test信息

TextMagic引入强大的核心API,可轻松将SMS发送到手机。该API是需要付费。

代码如下:

the TextMagic PHP lib

require('textmagic-sms-api-php/TextMagicAPI.php');

// Set the username and password information

$username = 'myusername';

$password = 'mypassword';

// Create a new instance of TM

$router = new TextMagicAPI(array(

'username' => $username,

'password' => $password

));

// Send a text message to '999-123-4567'

$result = $router->send('Wake up!', array(9991234567), true);

// result: Result is: Array ( [messages] => Array ( [19896128] => 9991234567 ) [sent_text] => Wake up! [parts_count] => 1 )

3) Get info about your memory usage——获取内存使用率

这段代码帮助你获取内存使用率。

代码如下:

echo "Initial: ".memory_get_usage()." bytes n";

/* prints

Initial: 361400 bytes

*/

// let's use up some memory

for ($i = 0; $i < 100000; $i++) {

$array []= md5($i);

}

// let's remove half of the array

for ($i = 0; $i < 100000; $i++) {

unset($array[$i]);

}

echo "Final: ".memory_get_usage()." bytes n";

/* prints

Final: 885912 bytes

*/

echo "Peak: ".memory_get_peak_usage()." bytes n";

/* prints

Peak: 13687072 bytes

*/

4) Display source code of any webpage——查看任意网页源代码

如果你想查看网页源代码,那么只需更改第二行的URL,源代码就会在网页上显示出。

代码如下:

<?php // display source code $lines = file('http://google.com/'); foreach ($lines as $line_num => $line) {

// loop thru each line and prepend line numbers

echo "Line #{$line_num} : " . htmlspecialchars($line) . "

n";

}

5) Create data uri's——创建数据uri

通过使用此代码,你可以创建数据Uri,这对在HTML/CSS中嵌入图片非常有用,可帮助节省HTTP请求。

代码如下:

function data_uri($file, $mime) {

$contents=file_get_contents($file);

$base64=base64_encode($contents);

echo "data:$mime;base64,$base64";

}

6) Detect location by IP——通过IP检索出地理位置

这段代码帮助你查找特定的IP,只需在功能参数上输入IP,就可检测出位置。

代码如下:

function detect_city($ip) {

$default = 'UNKNOWN';

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; } }

7) Detect browser language——查看浏览器语言

检测浏览器使用的代码脚本语言。

代码如下:

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;

}

8) Check if server is HTTPS——检测服务器是否是HTTPS

代码如下:

if ($_SERVER['HTTPS'] != "on") {

echo "This is not HTTPS";

}else{

echo "This is HTTPS";

}

9) Generate CSV file from a PHP array——在PHP数组中生成.csv 文件

代码如下:

function generateCsv($data, $delimiter = ',', $enclosure = '"') {

$handle = fopen('php://temp', 'r+');

foreach ($data as $line) {

fputcsv($handle, $line, $delimiter, $enclosure);

}

rewind($handle);

while (!feof($handle)) {

$contents .= fread($handle, 8192);

}

fclose($handle);

return $contents;

}

10.查找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

11.完善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;

}

}

12.清理用户输入

代码如下:

<?php

function cleanInput($input) {

$search = array(

'@<script[^>]*?>.*?</script>@si', // Strip out javascript

'@<[/!]*?[^<>]*?>@si', // Strip out HTML tags

'@<style[^>]*?>.*?</style>@siU', // Strip style tags properly

'@<![sS]*?--[ tnr]*>@' // Strip multi-line comments

);

$output = preg_replace($search, '', $input);

return $output;

}

?>

<?php

function sanitize($input) {

if (is_array($input)) {

foreach($input as $var=>$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;

}

?>

13.通过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; } }

14.设置密码强度

代码如下:

function password_strength($string){

$h = 0;

$size = strlen($string);

foreach(count_chars($string, 1) as $v){

$p = $v / $size;

$h -= $p * log($p) / log(2);

}

$strength = ($h / 4) * 100;

if($strength > 100){

$strength = 100;

}

return $strength;

}

var_dump(password_strength("Correct Horse Battery Staple"));

echo "<br>";

var_dump(password_strength("Super Monkey Ball"));

echo "<br>";

var_dump(password_strength("Tr0ub4dor&3"));

echo "<br>";

var_dump(password_strength("abc123"));

echo "<br>";

var_dump(password_strength("sweet"));

15.检测浏览器语言,只提供可用的$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;

}

16.创建数据URL

代码如下:

function data_uri($file, $mime) {

$contents=file_get_contents($file);

$base64=base64_encode($contents);

echo "data:$mime;base64,$base64";

}

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

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

代码如下:

function make_seo_name($title) {

return preg_replace('/[^a-z0-9_-]/i', '', strtolower(str_replace(' ', '-', trim($title))));

}

18.终极加密功能

代码如下:

// 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;

}

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

代码如下:

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;

}

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

代码如下:

loadTimeline("phpsnips")->getTweets();

foreach($feed as $time => $message){

echo "<div class='tweet'>".$twitter->formatTweet($message)."<br />At: ".$time."</div>";

}

更多信息请查看IT技术专栏

推荐信息