19個(gè)超實(shí)用的PHP代碼片段
來(lái)源:易賢網(wǎng) 閱讀:988 次 日期:2014-08-22 11:34:12
溫馨提示:易賢網(wǎng)小編為您整理了“19個(gè)超實(shí)用的PHP代碼片段”,方便廣大網(wǎng)友查閱!

每位程序員和開發(fā)者都喜歡討論他們最愛的代碼片段,尤其是當(dāng)PHP開發(fā)者花費(fèi)數(shù)個(gè)小時(shí)為網(wǎng)頁(yè)編碼或創(chuàng)建應(yīng)用時(shí),他們更知道這些代碼的重要性。為了節(jié)約編碼時(shí)間,小編收集了一些較為實(shí)用的代碼片段,幫助開發(fā)者提高工作效率

1) Whois query using PHP ——利用PHP獲取Whois請(qǐng)求

利用這段代碼,在特定的域名里可獲得whois信息。把域名名稱作為參數(shù),并顯示所有域名的相關(guān)信息。

代碼如下:

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 >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引入強(qiáng)大的核心API,可輕松將SMS發(fā)送到手機(jī)。該API是需要付費(fèi)。

代碼如下:

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——獲取內(nèi)存使用率

這段代碼幫助你獲取內(nèi)存使用率。

代碼如下:

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——查看任意網(wǎng)頁(yè)源代碼

如果你想查看網(wǎng)頁(yè)源代碼,那么只需更改第二行的URL,源代碼就會(huì)在網(wǎng)頁(yè)上顯示出。

代碼如下:

<?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——?jiǎng)?chuàng)建數(shù)據(jù)uri

通過(guò)使用此代碼,你可以創(chuàng)建數(shù)據(jù)Uri,這對(duì)在HTML/CSS中嵌入圖片非常有用,可幫助節(jié)省HTTP請(qǐng)求。

代碼如下:

function data_uri($file, $mime) {

$contents=file_get_contents($file);

$base64=base64_encode($contents);

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

}

6) Detect location by IP——通過(guò)IP檢索出地理位置

這段代碼幫助你查找特定的IP,只需在功能參數(shù)上輸入IP,就可檢測(cè)出位置。

代碼如下:

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——查看瀏覽器語(yǔ)言

檢測(cè)瀏覽器使用的代碼腳本語(yǔ)言。

代碼如下:

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——檢測(cè)服務(wù)器是否是HTTPS

代碼如下:

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

echo "This is not HTTPS";

}else{

echo "This is HTTPS";

}

9) Generate CSV file from a PHP array——在PHP數(shù)組中生成.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.通過(guò)IP(城市、國(guó)家)檢測(cè)地理位置

代碼如下:

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.設(shè)置密碼強(qiáng)度

代碼如下:

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.檢測(cè)瀏覽器語(yǔ)言,只提供可用的$availableLanguages作為數(shù)組(‘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.創(chuàng)建數(shù)據(jù)URL

代碼如下:

function data_uri($file, $mime) {

$contents=file_get_contents($file);

$base64=base64_encode($contents);

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

}

17.創(chuàng)建更加友好的頁(yè)面標(biāo)題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名,可在任意頁(yè)面上加載用戶資源。

代碼如下:

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——用于在主題中創(chuàng)建文件,比如:example.php

代碼如下:

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

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

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

}

更多信息請(qǐng)查看IT技術(shù)專欄

更多信息請(qǐng)查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機(jī)網(wǎng)站地址:19個(gè)超實(shí)用的PHP代碼片段
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國(guó)考·省考課程試聽報(bào)名

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)