必须收藏的23个php实用代码片段
发布:smiling 来源: PHP粉丝网 添加日期:2021-07-07 14:29:25 浏览: 评论:0
这篇文章主要为大家分享了必须收藏的23个php实用代码片段,帮助大家更好地学习php程序设计,感兴趣的小伙伴们可以参考一下。
在编写代码的时候有个神奇的工具总是好的!下面这里收集了 40+ PHP 代码片段,可以帮助你开发 PHP 项目。
这些 PHP 片段对于 PHP 初学者也非常有帮助,非常容易学习,让我们开始学习吧~
1. 发送 SMS
在开发 Web 或者移动应用的时候,经常会遇到需要发送 SMS 给用户,或者因为登录原因,或者是为了发送信息。下面的 PHP 代码就实现了发送 SMS 的功能。
为了使用任何的语言发送 SMS,需要一个 SMS gateway。大部分的 SMS 会提供一个 API,这里是使用 MSG91 作为 SMS gateway。
- function send_sms($mobile,$msg)
- {
- $authKey = "XXXXXXXXXXX";
- date_default_timezone_set("Asia/Kolkata");
- $date = strftime("%Y-%m-%d %H:%M:%S");
- //Multiple mobiles numbers separated by comma
- $mobileNumber = $mobile;
- //Sender ID,While using route4 sender id should be 6 characters long.
- $senderId = "IKOONK";
- //Your message to send, Add URL encoding here.
- $message = urlencode($msg);
- //Define route
- $route = "template";
- //Prepare you post parameters
- $postData = array(
- 'authkey' => $authKey,
- 'mobiles' => $mobileNumber,
- 'message' => $message,
- 'sender' => $senderId,
- 'route' => $route
- );
- //API URL
- $url="https://control.msg91.com/sendhttp.php";
- // init the resource
- $ch = curl_init();
- curl_setopt_array($ch, array(
- CURLOPT_URL => $url,
- CURLOPT_RETURNTRANSFER => true,
- CURLOPT_POST => true,
- CURLOPT_POSTFIELDS => $postData
- //,CURLOPT_FOLLOWLOCATION => true
- ));
- //Ignore SSL certificate verification
- curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
- //get response
- $output = curl_exec($ch);
- //Print error if any
- if(curl_errno($ch))
- {
- echo 'error:' . curl_error($ch);
- }
- curl_close($ch);
- }
其中“$authKey = "XXXXXXXXXXX";”需要你输入你的密码,“$senderId = "IKOONK";”需要你输入你的 SenderID。当输入移动号码的时候需要指定国家代码 (比如,美国是 1,印度是 91 )。
语法:
- <?php
- $message = "Hello World";
- $mobile = "918112998787";
- send_sms($mobile,$message);
- ?>
2. 使用 mandrill 发送邮件
Mandrill 是一款强大的 SMTP 提供器。开发者倾向于使用一个第三方 SMTP provider 来获取更好的收件交付。
下面的函数中,你需要把 “Mandrill.php” 放在同一个文件夹,作为 PHP 文件,这样就可以使用TA来发送邮件。
- function send_email($to_email,$subject,$message1)
- {
- require_once 'Mandrill.php';
- $apikey = 'XXXXXXXXXX'; //specify your api key here
- $mandrill = new Mandrill($apikey);
- $message = new stdClass();
- $message->html = $message1;
- $message->text = $message1;
- $message->subject = $subject;
- $message->from_email = "blog@koonk.com";//Sender Email
- $message->from_name = "KOONK";//Sender Name
- $message->to = array(array("email" => $to_email));
- $message->track_opens = true;
- $response = $mandrill->messages->send($message);
- }
$apikey = 'XXXXXXXXXX'; //specify your api key here”这里需要你指定你的 API 密钥(从 Mandrill 账户中获得)。
语法:
- <?php
- $to = "abc@example.com";
- $subject = "This is a test email";
- $message = "Hello World!";
- send_email($to,$subject,$message);
- ?>
为了达到最好的效果,最好按照 Mandrill 的教程去配置 DNS。
3. PHP 函数:阻止 SQL 注入
SQL 注入或者 SQLi 常见的攻击网站的手段,使用下面的代码可以帮助你防止这些工具。
- function clean($input)
- {
- if (is_array($input))
- {
- foreach ($input as $key => $val)
- {
- $output[$key] = clean($val);
- // $output[$key] = $this->clean($val);
- }
- }
- else
- {
- $output = (string) $input;
- // if magic quotes is on then use strip slashes
- if (get_magic_quotes_gpc())
- {
- $output = stripslashes($output);
- }
- // $output = strip_tags($output);
- $output = htmlentities($output, ENT_QUOTES, 'UTF-8');
- }
- // return the clean text
- return $output;
- }
语法:
- <?php
- $text = "<script>alert(1)</script>";
- $text = clean($text);
- echo $text;
- ?>
4. 检测用户位置
使用下面的函数,可以检测用户是在哪个城市访问你的网站
- function detect_city($ip) {
- $default = 'UNKNOWN';
- $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('{<li>City : ([^<]*)</li>}i', $content, $regs) ) {
- $city = $regs[1];
- }
- if ( preg_match('{<li>State/Province : ([^<]*)</li>}i', $content, $regs) ) {
- $state = $regs[1];
- }
- if( $city!='' && $state!='' ){
- $location = $city . ', ' . $state;
- return $location;
- }else{
- return $default;
- }
- }
语法:
- <?php
- $ip = $_SERVER['REMOTE_ADDR'];
- $city = detect_city($ip);
- echo $city;
- ?>
5. 获取 Web 页面的源代码
使用下面的函数,可以获取任意 Web 页面的 HTML 代码
- function display_sourcecode($url)
- {
- $lines = file($url);
- $output = "";
- foreach ($lines as $line_num => $line) {
- // loop thru each line and prepend line numbers
- $output.= "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "\n";
- }
- }
语法:
- <?php
- $url = "http://blog.koonk.com";
- $source = display_sourcecode($url);
- echo $source;
- ?>
6. 计算喜欢你的 Facebook 页面的用户
- function fb_fan_count($facebook_name)
- {
- $data = json_decode(file_get_contents("https://graph.facebook.com/".$facebook_name));
- $likes = $data->likes;
- return $likes;
- }
语法:
- <?php
- $page = "koonktechnologies";
- $count = fb_fan_count($page);
- echo $count;
- ?>
7. 确定任意图片的主导颜色
- function dominant_color($image)
- {
- $i = imagecreatefromjpeg($image);
- for ($x=0;$x<imagesx($i);$x++) {
- for ($y=0;$y<imagesy($i);$y++) {
- $rgb = imagecolorat($i,$x,$y);
- $r = ($rgb >> 16) & 0xFF;
- $g = ($rgb >> & 0xFF;
- $b = $rgb & 0xFF;
- $rTotal += $r;
- $gTotal += $g;
- $bTotal += $b;
- $total++;
- }
- }
- $rAverage = round($rTotal/$total);
- $gAverage = round($gTotal/$total);
- $bAverage = round($bTotal/$total);
- }
8. 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:
- //
- // http://de.wikipedia.org/wiki/Whois
- //
- $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."\r\n");
- while(!feof($conn)) {
- $output .= fgets($conn,128);
- }
- fclose($conn);
- }
- else { die('Error: Could not connect to ' . $nic_server . '!'); }
- return $output;
- }
语法:
- <?php
- $domain = "http://www.blog.koonk.com";
- $result = whois_query($domain);
- print_r($result);
- ?>
9. 验证邮箱地址
有时候,当在网站填写表单,用户可能会输入错误的邮箱地址,这个函数可以验证邮箱地址是否有效。
- function is_validemail($email)
- {
- $check = 0;
- if(filter_var($email,FILTER_VALIDATE_EMAIL))
- {
- $check = 1;
- }
- return $check;
- }
语法:
- <?php
- $email = "blog@koonk.com";
- $check = is_validemail($email);
- echo $check;
- // If the output is 1, then email is valid.
- ?>
10. 获取用户的真实 IP
- function getRealIpAddr()
- {
- if (!emptyempty($_SERVER['HTTP_CLIENT_IP']))
- {
- $ip=$_SERVER['HTTP_CLIENT_IP'];
- }
- elseif (!emptyempty($_SERVER['HTTP_X_FORWARDED_FOR']))
- //to check ip is pass from proxy
- {
- $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
- }
- else
- {
- $ip=$_SERVER['REMOTE_ADDR'];
- }
- return $ip;
- }
语法:
- <?php
- $ip = getRealIpAddr();
- echo $ip;
- ?>
11. 转换 URL:从字符串变成超链接
如果你正在开发论坛,博客或者是一个常规的表单提交,很多时候都要用户访问一个网站,使用这个函数,URL 字符串就可以自动的转换为超链接。
- function makeClickableLinks($text)
- {
- $text = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_+.~#?&//=]+)',
- '<a href="\1">\1</a>', $text);
- $text = eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_+.~#?&//=]+)',
- '\1<a href="http://\2">\2</a>', $text);
- $text = eregi_replace('([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3})',
- '<a href="mailto:\1">\1</a>', $text);
- return $text;
- }
语法:
- <?php
- $text = "This is my first post on http://blog.koonk.com";
- $text = makeClickableLinks($text);
- echo $text;
- ?>
12. 阻止多个 IP 访问你的网站
这个代码片段可以方便你禁止某些特定的 IP 地址访问你的网站
- if ( !file_exists('blocked_ips.txt') ) {
- $deny_ips = array(
- '127.0.0.1',
- '192.168.1.1',
- '83.76.27.9',
- '192.168.1.163'
- );
- } else {
- $deny_ips = file('blocked_ips.txt');
- }
- // read user ip adress:
- $ip = isset($_SERVER['REMOTE_ADDR']) ? trim($_SERVER['REMOTE_ADDR']) : '';
- // search current IP in $deny_ips array
- if ( (array_search($ip, $deny_ips))!== FALSE ) {
- // address is blocked:
- echo 'Your IP adress ('.$ip.') was blocked!';
- exit;
- }
13. 强制性文件下载
如果你需要下载特定的文件而不用另开新窗口,下面的代码片段可以帮助你。
- function force_download($file)
- {
- $dir = "../log/exports/";
- if ((isset($file))&&(file_exists($dir.$file))) {
- header("Content-type: application/force-download");
- header('Content-Disposition: inline; filename="' . $dir.$file . '"');
- header("Content-Transfer-Encoding: Binary");
- header("Content-length: ".filesize($dir.$file));
- header('Content-Type: application/octet-stream');
- header('Content-Disposition: attachment; filename="' . $file . '"');
- readfile("$dir$file");
- } else {
- echo "No file selected";
- }
- }
语法:
- <php
- force_download("image.jpg");
- ?>
14. 创建 JSON 数据
使用下面的 PHP 片段可以创建 JSON 数据,可以方便你创建移动应用的 Web 服务
$json_data = array ('id'=>1,'name'=>"Mohit");
echo json_encode($json_data);
15. 压缩 zip 文件
使用下面的 PHP 片段可以即时压缩 zip 文件
- function create_zip($files = array(),$destination = '',$overwrite = false) {
- //if the zip file already exists and overwrite is false, return false
- if(file_exists($destination) && !$overwrite) { return false; }
- //vars
- $valid_files = array();
- //if files were passed in...
- if(is_array($files)) {
- //cycle through each file
- foreach($files as $file) {
- //make sure the file exists
- if(file_exists($file)) {
- $valid_files[] = $file;
- }
- }
- }
- //if we have good files...
- if(count($valid_files)) {
- //create the archive
- $zip = new ZipArchive();
- if($zip->open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {
- return false;
- }
- //add the files
- foreach($valid_files as $file) {
- $zip->addFile($file,$file);
- }
- //debug
- //echo 'The zip archive contains ',$zip->numFiles,' files with a status of ',$zip->status;
- //close the zip -- done!
- $zip->close();
- //check to make sure the file exists
- return file_exists($destination);
- }
- else
- {
- return false;
- }
- }
语法:
- <?php
- $files=array('file1.jpg', 'file2.jpg', 'file3.gif');
- create_zip($files, 'myzipfile.zip', true);
- ?>
16. 解压文件
- function unzip($location,$newLocation)
- {
- if(exec("unzip $location",$arr)){
- mkdir($newLocation);
- for($i = 1;$i< count($arr);$i++){
- $file = trim(preg_replace("~inflating: ~","",$arr[$i]));
- copy($location.'/'.$file,$newLocation.'/'.$file);
- unlink($location.'/'.$file);
- }
- return TRUE;
- }else{
- return FALSE;
- }
- }
语法:
- <?php
- unzip('test.zip','unziped/test'); //File would be unzipped in unziped/test folder
- ?>
17. 缩放图片
- function resize_image($filename, $tmpname, $xmax, $ymax)
- {
- $ext = explode(".", $filename);
- $ext = $ext[count($ext)-1];
- if($ext == "jpg" || $ext == "jpeg")
- $im = imagecreatefromjpeg($tmpname);
- elseif($ext == "png")
- $im = imagecreatefrompng($tmpname);
- elseif($ext == "gif")
- $im = imagecreatefromgif($tmpname);
- $x = imagesx($im);
- $y = imagesy($im);
- if($x <= $xmax && $y <= $ymax)
- return $im;
- if($x >= $y) {
- $newx = $xmax;
- $newy = $newx * $y / $x;
- }
- else {
- $newy = $ymax;
- $newx = $x / $y * $newy;
- }
- $im2 = imagecreatetruecolor($newx, $newy);
- imagecopyresized($im2, $im, 0, 0, 0, 0, floor($newx), floor($newy), $x, $y);
- return $im2;
- }
18. 使用 mail() 发送邮件
之前我们提供了如何使用 Mandrill 发送邮件的 PHP 代码片段,但是如果你不想使用第三方服务,那么可以使用下面的 PHP 代码片段。
- function send_mail($to,$subject,$body)
- {
- $headers = "From: KOONK\r\n";
- $headers .= "Reply-To: blog@koonk.com\r\n";
- $headers .= "Return-Path: blog@koonk.com\r\n";
- $headers .= "X-Mailer: PHP5\n";
- $headers .= 'MIME-Version: 1.0' . "\n";
- $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
- mail($to,$subject,$body,$headers);
- }
语法:
- <?php
- $to = "admin@koonk.com";
- $subject = "This is a test mail";
- $body = "Hello World!";
- send_mail($to,$subject,$body);
- ?>
19. 把秒转换成天数,小时数和分钟
- function secsToStr($secs) {
- if($secs>=86400){$days=floor($secs/86400);$secs=$secs%86400;$r=$days.' day';if($days<>1){$r.='s';}if($secs>0){$r.=', ';}}
- if($secs>=3600){$hours=floor($secs/3600);$secs=$secs%3600;$r.=$hours.' hour';if($hours<>1){$r.='s';}if($secs>0){$r.=', ';}}
- if($secs>=60){$minutes=floor($secs/60);$secs=$secs%60;$r.=$minutes.' minute';if($minutes<>1){$r.='s';}if($secs>0){$r.=', ';}}
- $r.=$secs.' second';if($secs<>1){$r.='s';}
- return $r;
- }
语法:
- <?php
- $seconds = "56789";
- $output = secsToStr($seconds);
- echo $output;
- ?>
20. 数据库连接
连接 MySQL 数据库
- <?php
- $DBNAME = 'koonk';
- $HOST = 'localhost';
- $DBUSER = 'root';
- $DBPASS = 'koonk';
- $CONNECT = mysql_connect($HOST,$DBUSER,$DBPASS);
- if(!$CONNECT)
- {
- echo 'MySQL Error: '.mysql_error();
- }
- $SELECT = mysql_select_db($DBNAME);
- if(!$SELECT)
- {
- echo 'MySQL Error: '.mysql_error();
- }
- ?>
21. 目录清单
使用下面的 PHP 代码片段可以在一个目录中列出所有文件和文件夹
- function list_files($dir)
- {
- if(is_dir($dir))
- {
- if($handle = opendir($dir))
- {
- while(($file = readdir($handle)) !== false)
- {
- if($file != "." && $file != ".." && $file != "Thumbs.db"/*pesky windows, images..*/)
- {
- echo '<a target="_blank" href="'.$dir.$file.'">'.$file.'</a>'."\n";
- }
- }
- closedir($handle);
- }
- }
- }
语法:
- <?php
- list_files("images/"); //This will list all files of images folder
- ?>
22. 检测用户语言
使用下面的 PHP 代码片段可以检测用户浏览器所使用的语言
- 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;
- }
23. 查看 CSV 文件
- function readCSV($csvFile){
- $file_handle = fopen($csvFile, 'r');
- while (!feof($file_handle) ) {
- $line_of_text[] = fgetcsv($file_handle, 1024);
- }
- fclose($file_handle);
- return $line_of_text;
- }
语法:
- <?php
- $csvFile = "test.csv";
- $csv = readCSV($csvFile);
- $a = csv[0][0]; // This will get value of Column 1 & Row 1
- ?>
以上就是本文的全部内容,希望对大家的学习有所帮助。
Tags: php实用代码片段
- 上一篇:PHP编程入门的基本语法知识点总结
- 下一篇:必须收藏的php实用代码片段
相关文章
- ·19个超实用的PHP代码片段(2020-10-28)
- ·9个比较实用的php代码片段(2021-07-14)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)