直接拿來用,10個PHP代碼片段

2021-01-10 CSDN技術社區

還記得CSDN研發頻道此前發表過的一篇《可以直接拿來用的15個jQuery代碼片段》嗎?本文筆者將繼續為你奉上10個超級有用的PHP代碼片段。

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.6025feet: 13,741.4350yards: 4,580.4783kilometers: 4.1884meters: 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.清理用戶輸入

]*?>.*?@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(城市、國家)檢測地理位置

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

輸入示例:$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))));}

源碼

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

本文為CSDN編譯整理,未經允許不得轉載,如需轉載請聯繫market#csdn.net(#換成@)

相關焦點

  • PHP實例——PHP創建動態圖像
    在安裝時一定要按這裡給定的順序進行安裝,因為在編譯GD入庫時會用到jpeg-6b,如果沒有安裝jpeg-6b,在編譯時就會出錯。     在安裝完這三個組件後,還需要重新配置一次PHP,這也是你對採用DSO方式安裝PHP感到慶幸的地方之一。
  • polarphp 0.0.1 alpha 發布:全新 PHP 運行時環境
    polarphp借鑑NodeJS和Go的相關特性對zendVM重新封裝,去掉PHP一些古老棄用的特性和強Web屬性,通過實現一套新的運行時框架libpdk,將PHP語言打造成為一門真正的通用性腳本語言,賦能PHP,讓其擁有異步編程,協程,線程,內置的unicode支持,標準的文件IO等等特性,讓PHP程式設計師不僅僅能做web應用,也能從容面對真正的服務端應用。
  • Php常見問題總結
    > 在php4.2之後,可以為session直接付值: <?PHPSession_Start();$_SESSION["name"]="value";?
  • PHP文件包含漏洞利用思路與Bypass總結手冊(二)
    session.serialize_handlerPHP中處理用戶會話信息的主要是下面定義的兩種方式session.serialize_handler = php 一直都在(默認方式) 它是用 |分割session.serialize_handler = php_serialize php5.5之後啟用 它是用serialize反序列化格式分割
  • 關於PHP 5.4 你所需要知道的
    打個比方,我們要做個網站,需要使用Facebook和Twitter的APIs。我們要建2個類,如果是以前,我們需要寫一個cURL的方法並且複製/粘貼到兩個類中。現在不用了,使用Traits重用代碼吧,這次真正地遵循了DRY(Don’t Repeat Yourself)原則。
  • php中函數禁用繞過的原理與利用
    ;chdir('..'); ini_set('open_basedir','/'); echo file_get_contents('/etc/passwd');利用了ini_set的open_basedir的設計缺陷,可以用如下代碼觀察一下其bypass過程:<?php ini_set('open_basedir', '/var/www/html:' .'
  • php常量是什麼?它和變量有什麼區別?
    本篇將介紹php常量是什麼?它和變量有什麼區別?有興趣的朋友可以了解一下!一、前言php是一門很受歡迎的程式語言之一,它的語法簡單易學,迎來了一大批自學者,小編也是其中之一。小編自學php學了四個多月吧!雖然算不上精通,但是也算得上小有成就,獨立開發中小型網站還是不成問題的。
  • 怎麼理解php中的數組?php的數組創建和使用方法是什麼?
    php數組的定義數組就是值類型相同的變量的集合,在PHP中的一種常用的複合數據類型,數據可以存放很多的數據,可以存儲任何類型的數據。我們可以把變量當做一個包含值得盒子,那麼可以把數組當做當成一個帶有隔層的盒子,每一層都可以存放一個值。
  • JavaScript和Underscore.js在PHP中輸入方法 - 智能甄選
    你喜歡用JavaScript編寫代碼嗎,但是對於某些項目必須使用PHP嗎?請繼續閱讀以了解如何使用有趣的圖書館將兩者結合起來。自2000年以來我一直在使用PHP,並且使用JavaScript的時間更長。在過去的十年裡,JavaScript已經發生了巨大的變化。
  • 實例-使用PHP類庫PHPqrCode生成二維碼
    下載官網提供的類庫後,只需要使用 phpqrcode.php 就可以生成二維碼了,你使用的PHP環境必須開啟支持GD2。一、phpqrcode直接輸出二維碼:【例1】調用PHPqrCode非常簡單,如下代碼即可生成一張內容為 百度首頁的二維碼。代碼如下:
  • php基礎大通關——十分鐘了解php基礎知識點之二
    本節我們繼續通過練習題的方式來熟悉php的基礎知識點。1. echo 和 print 有什麼區別?所以本題選擇第三個答案。2. upload_max_filesize 中最大上傳默認設置是多少? 1 MB 2 MB 3 MB 4 MB解析:upload_max_filesize 中最大上傳默認設置是2M。
  • 世界上最好的語言PHP:OpenCV與計算機視覺已在我掌控之下
    OpenCV 中添加的一個 DNN 模塊以某種方式減少了這些混亂,它使得你可以直接使用一個在基本框架中訓練過的模型。我會向你展示如何在 PHP 中使用這個模塊。200 個數組。總的來說,它可以區分 1000 個類別,這對我來說還不夠。
  • php基礎通關大挑戰,看看你能過幾關!
    繼續上一節的內容,通過試題的方式查缺補漏,看看你的php基礎知識還有哪些漏洞!1.在php中,以下代碼列印的結果是?<?php$RESULT =11+011+0x11;echo "$RESULT";?
  • PHP 框架 QueryPHP 1.0.3 發布,兼容 PHP 8.0 和 PHP 8.1
    QueryPHP 1.0.3 僅僅做了對 PHP 8.0 和 PHP 8.1 兼容性處理,修復了 PHP 8 下面的代碼和測試用例。
  • php如何使用array_merge()函數?(代碼示例)
    array_merge()函數array_merge()函數用逗號(',')分隔的數組列表作為需要合併的參數,然後將後一個數組的值附加在前一個數組的末尾,形成一個新數組並返回,這個數組中包含在參數中傳遞的數組的合併值。說明:我們可以在參數中傳遞任意數量的數組。
  • 25個不錯PHP的遊戲編程腳本代碼分享
    本文介紹了25個不錯PHP的遊戲編程腳本代碼,包括簡單的擲骰器、隨機名稱生成器、場景生成器、牌組創建器(Deck builder)和裝備(shuffler)、簡單的撲克發牌器、Hangman遊戲
  • 如何用一行代碼畫個迷宮?
    作者 | 猿媛牧場大家都知道 Python 的 Lambda 表達式只能寫一行,這也是一直拿來和 JS 比較的時候,被詬病的一點,但是我今天想說的是,你真的會 Python 的 Lambda 嗎?我們來分析下,首先 __import__ 就是我們在倒入模塊的時候一直用的 import 關鍵字,只不過這裡用內置函數了。.choice 裡面的東西是什麼?對於 Shell 熟悉的同學肯定不陌生,就是 2 個斜槓,那為什麼不用 \ 表示呢?因為他最終是在 shell 客戶端上表現的。
  • TP6多應用模式下獲取不到當前控制器和方法名 - php中文網
    前言:最近使用TP6做了一套項目,發現多應用模式下使用 $this->request->controller()和 $this->request->action() 無法獲取到當前的控制器和方法名,自己研究了一下,找了個笨辦法
  • 找找這幾個網站吧,圖片直接拿來用!
    1、Oncomine網址:https://www.oncomine.org/resource/login.html應該是現在最方便的腫瘤數據挖掘平臺了,用學校郵箱註冊以後,按照自己的研究方向一頓選擇,就能產出一堆圖出來,關鍵還能直接放到文章裡。
  • 10個 Javascript 小技巧幫你提升代碼質量
    本文轉載自【微信公眾號:前端人,ID:FrontendPeople】經微信公眾號授權轉載,如需轉載與原文作者聯繫簡介主要介紹以下幾點:提煉函數合併重複的條件片段把條件分支語句提煉成函數合理使用循環提前讓函數退出代替嵌套條件分支傳遞對象參數代替過長的參數列表少用三目運算符合理使用鏈式調用分解大型類本文會不斷更新,不足之處歡迎評論區補充