46 个非常有用的 PHP 代码片段

前端之家收集整理的这篇文章主要介绍了46 个非常有用的 PHP 代码片段前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

这些 PHP 片段对于 PHP 初学者也非常有帮助,非常容易学习,让我们开始学习吧~

<font size="4">1. 发送 SMS

在开发 Web 或者移动应用的时候,经常会遇到需要发送 SMS 给用户,或者因为登录原因,或者是为了发送信息。下面的 PHP 代码就实现了发送 SMS 的功能
为了使用任何的语言发送 SMS,需要一个 SMS gateway。大部分的 SMS 会提供一个 API,这里是使用 <a target="_blank" href="http://msg91.com/ ">MSG91 作为 SMS gateway。

//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 )。 语法:


2. 使用 mandrill 发送邮件 是一款强大的 SMTP 提供器。开发者倾向于使用一个第三方 SMTP provider 来获取更好的收件交付。 下面的函数中,你需要把 “” 放在同一个文件夹,作为 PHP 文件,这样就可以使用TA来发送邮件。

$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 账户中获得)。 语法:


为了达到最好的效果,最好按照 Mandrill 的教程去配置 DNS。

<font size="4">3. PHP 函数:阻止 SQL 注入
<a target="_blank" href="
https://en.wikipedia.org/wiki/SQL_injection ">SQL 注入或者 sqli 常见的攻击网站的手段,使用下面的代码可以帮助你防止这些工具。

 $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 = "";
$text = clean($text);
echo $text;
?>

4. 检测用户位置 使用下面的函数,可以检测用户是在哪个城市访问你的网站

$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('{

  • City : ([^<])
  • }i',$content,$regs) ) {
    $city = $regs[1];
    }
    if ( preg_match('{
  • State/Province : ([^<])
  • }i',$regs) ) {
    $state = $regs[1];
    }

    if( $city!='' && $state!='' ){
    $location = $city . ',' . $state;
    return $location;
    }else{
    return $default;
    }

    }

    语法:

    
    

    5. 获取 Web 页面的源代码 使用下面的函数,可以获取任意 Web 页面的 HTML 代码

     $line) { 
     // loop thru each line and prepend line numbers
     $output.= "Line #{$line_num} : " . htmlspecialchars($line) . "\n";
    }
    }

    语法:

    
    

    6. 计算喜欢你的 Facebook 页面用户

    likes;
     return $likes;
    }

    
    

    7. 确定任意图片的主导颜色

    > 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 查询 使用下面的函数可以获取任何域名用户的完整细节

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

    语法:

    
    

    9. 验证邮箱地址 有时候,当在网站填写表单,用户可能会输入错误的邮箱地址,这个函数可以验证邮箱地址是否有效。

    语法:
    <?php
    $email = "blog@koonk.com";
    $check = is_validemail($email);
    echo $check;
    // If the output is 1,then email is valid.
    ?>

    10. 获取用户的真实 IP

    
    

    11. 转换 URL:从字符串变成超链接 如果你正在开发论坛,博客或者是一个常规的表单提交,很多时候都要用户访问一个网站。使用这个函数,URL 字符串就可以自动的转换为超链接

    ',$text); 
     $text = eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_+.~#?&//=]+)','\1',$text); 
     $text = eregi_replace('([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3})','',$text); 
    

    return $text;
    }

    语法:
    <?php
    $text = "This is my first post on
    http://blog.koonk.com";
    $text = makeClickableLinks($text);
    echo $text;
    ?>

    12. 阻止多个 IP 访问你的网站 这个代码片段可以方便你禁止某些特定的 IP 地址访问你的网站

    // 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. 强制性文件下载 如果你需要下载特定的文件而不用另开新窗口,下面的代码片段可以帮助你。

    语法:

    
    

    14. 创建 JSON 数据 使用下面的 PHP 片段可以创建 JSON 数据,可以方便你创建移动应用的 Web 服务

    1,'name'=>"Mohit");
    echo json_encode($json_data);

    15. 压缩 zip 文件 使用下面的 PHP 片段可以即时压缩 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. 解压文件

    语法:

    
    

    17. 缩放图片

    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,floor($newx),floor($newy),$y);
    return $im2;
    }

    18. 使用 mail() 发送邮件 之前我们提供了如何使用 Mandrill 发送邮件的 PHP 代码片段,但是如果你不想使用第三方服务,那么可以使用下面的 PHP 代码片段。

    语法:
    <?php
    $to = "admin@koonk.com";
    $subject = "This is a test mail";
    $body = "Hello World!";
    send_mail($to,$body);
    ?>

    19. 把秒转换成天数,小时数和分钟

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

    
    

    20. 数据库连接 连接 MySQL 数据库

    
    

    21. 目录清单 使用下面的 PHP 代码片段可以在一个目录中列出所有文件和文件夹

    '."\n";
      }
      }
      closedir($handle);
     }
     }
    }

    语法:

    
    

    22. 检测用户语言 使用下面的 PHP 代码片段可以检测用户浏览器所使用的语言

    23. 查看 CSV 文件

    语法:
    <?php
    $csvFile = "test.csv";
    $csv = readCSV($csvFile);
    $a = csv[0][0]; // This will get value of Column 1 & Row 1
    ?>

    24. 从 PHP 数据创建 CSV 文件

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

    语法:
    <?php
    $data[0] = "apple";
    $data[1] = "oranges";
    generateCsv($data,$enclosure = '"');
    ?>

    25. 解析 XML 数据

    //load the xml string using simplexml function
    $xml = simplexml_load_string($xml_string);

    //loop through the each node of molecule
    foreach ($xml->molecule as $record)
    {
    //attribute are accessted by
    echo $record['name'],' ';
    //node are accessted by -> operator
    echo $record->symbol,' ';
    echo $record->code,'';
    }

    26. 解析 JSON 数据

    name; //displays rolf
    echo $obj->office[0]; //displays google

    <font size="4">27. 获取当前页面 URL
    这个 PHP 片段可以帮助你让用户登录后直接跳转到之前浏览的页面

    语法:

    
    

    28. 从任意的 Twitter 账号获取最新的 Tweet

    getName() == "content") {
      $content = $value . "";
     echo '

    '; } } } }

    语法:
    <?php
    $handle = "koonktech";
    my_twitter($handle);
    ?>

    29. 转发数量 使用这个 PHP 片段可以检测你的页面 URL 有多少转发数量

    story->url_count;
     if($retweets){
     return $retweets;
     } else {
     return 0;
     }
    }
    

    语法:
    <?php
    $url = "http://blog.koonk.com";
    $count = tweetCount($url);
    return $count;
    ?>

    30. 计算两个日期的差

    diff($date2);
    echo "difference " . $interval->y . " years," . $interval->m." months,".$interval->d." days "; 
    // shows the total amount of days (not divided into years,months and days like above)
    echo "difference " . $interval->days . " days ";
    -------------------------------------------------------- OR
    

    /**

    • Calculate differences between two dates with precise semantics. Based on PHPs DateTime::diff()
    • implementation by Derick Rethans. Ported to PHP by Emil H,2011-05-02. No rights reserved.
    • See here for original code:
    • http://svn.php.net/viewvc/php/php-src/trunk/ext/date/lib/tm2unixtime.c?revision=302890&view=markup
    • http://svn.php.net/viewvc/php/php-src/trunk/ext/date/lib/interval.c?revision=298973&view=markup
      /
      function _date_range_limit($start,$end,$adj,$a,$b,$result)
      {
      if ($result[$a] < $start) {
      $result[$b] -= intval(($start - $result[$a] - 1) / $adj) + 1;
      $result[$a] += $adj
      intval(($start - $result[$a] - 1) / $adj + 1);
      }
      if ($result[$a] >= $end) {
      $result[$b] += intval($result[$a] / $adj);
      $result[$a] -= $adj * intval($result[$a] / $adj);
      }
      return $result;
      }
      function _date_range_limit_days($base,$result)
      {
      $days_in_month_leap = array(31,31,29,30,31);
      $days_in_month = array(31,28,31);
      _date_range_limit(1,13,12,"m","y",&$base);
      $year = $base["y"];
      $month = $base["m"];
      if (!$result["invert"]) {
      while ($result["d"] < 0) {
      $month--;
      if ($month < 1) {
      $month += 12;
      $year--;
      }
      $leapyear = $year % 400 == 0 || ($year % 100 != 0 && $year % 4 == 0);
      $days = $leapyear ? $days_in_month_leap[$month] : $days_in_month[$month];
      $result["d"] += $days;
      $result["m"]--;
      }
      } else {
      while ($result["d"] < 0) {
      $leapyear = $year % 400 == 0 || ($year % 100 != 0 && $year % 4 == 0);
      $days = $leapyear ? $days_in_month_leap[$month] : $days_in_month[$month];
      $result["d"] += $days;
      $result["m"]--;
      $month++;
      if ($month > 12) {
      $month -= 12;
      $year++;
      }
      }
      }
      return $result;
      }
      function _date_normalize($base,$result)
      {
      $result = _date_range_limit(0,60,"s","i",$result);
      $result = _date_range_limit(0,"h",24,"d",$result);
      $result = _date_range_limit_days(&$base,&$result);
      $result = _date_range_limit(0,$result);
      return $result;
      }
      /**
    • Accepts two unix timestamps.
      */
      function _date_diff($one,$two)
      {
      $invert = false;
      if ($one > $two) {
      list($one,$two) = array($two,$one);
      $invert = true;
      }
      $key = array("y","s");
      $a = array_combine($key,array_map("intval",explode(" ",date("Y m d H i s",$one))));
      $b = array_combine($key,$two))));
      $result = array();
      $result["y"] = $b["y"] - $a["y"];
      $result["m"] = $b["m"] - $a["m"];
      $result["d"] = $b["d"] - $a["d"];
      $result["h"] = $b["h"] - $a["h"];
      $result["i"] = $b["i"] - $a["i"];
      $result["s"] = $b["s"] - $a["s"];
      $result["invert"] = $invert ? 1 : 0;
      $result["days"] = intval(abs(($one - $two)/86400));
      if ($invert) {
      _date_normalize(&$a,&$result);
      } else {
      _date_normalize(&$b,&$result);
      }
      return $result;
      }
      $date = "2014-12-04 19:37:22";
      echo '
      ';
      print_r( _date_diff( strtotime($date),time() ) );
      echo '
      ';
      ?>

    31. 删除文件夹内容

    语法:

    
    

    32. 搜索和高亮字符串中的关键字

    $1",$text );
     }
     return $text;
    }

    语法:

    
    

    33. 写入文件

    
    

    34. 根据 URL 下载图片

    语法:

    
    

    35. 检测 URL 是否有效

    语法:
    <?php
    $url = "http://koonk.com";
    $check = checkvalidURL($url);
    echo $check; //if returns 1 then URL is valid.
    ?>

    36. 生成二维码

     "http://","TEL" => "TEL:","TXT"=>"","EMAIL" => "MAILTO:");
     if(!in_array($type,array("URL","TEL","TXT","EMAIL")))
     {
     $type = "TXT";
     }
     if (!preg_match('/^'.$types[$type].'/',$data))
     {
     $data = str_replace("\\",$types[$type]).$data;
     }
     $ch = curl_init();
     $data = urlencode($data);
     curl_setopt($ch,CURLOPT_URL,'http://chart.apis.google.com/chart');
     curl_setopt($ch,CURLOPT_POST,true);
     curl_setopt($ch,CURLOPT_POSTFIELDS,'chs='.$size.'x'.$size.'&cht=qr&chld='.$ec.'|'.$margin.'&chl='.$data);
     curl_setopt($ch,false);
     curl_setopt($ch,CURLOPT_TIMEOUT,30);
     $response = curl_exec($ch);
     curl_close($ch);
     return $response;
    }

    语法:

    
    

    37. 计算两个地图坐标之间的距离

    语法:

     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).'';
    }
    ?>

    38. 获取一个特定话题标签的所有 Tweets

    Connecting to 

    $url

    ...

    "; $ch = curl_init($url); curl_setopt ($ch,TRUE); $xml = curl_exec ($ch); curl_close ($ch); //If you want to see the response from Twitter,uncomment this next part out: //echo "

    Response:

    "; //echo "
    ".htmlspecialchars($xml)."
    "; $affected = 0; $twelement = new SimpleXMLElement($xml); foreach ($twelement->entry as $entry) { $text = trim($entry->title); $author = trim($entry->author->name); $time = strtotime($entry->published); $id = $entry->id; echo "

    Tweet from ".$author.":

    ".$text."

    Posted ".date('n/j/y g:i a',$time)."

    "; } return true ; }

    39. 添加 th,st,nd 或者 rd 作为数字的后缀

     4) ? 'th'
      : (($test_c < 4) ? ($test_c < 3) ? ($test_c < 2) ? ($test_c < 1) 
      ? 'th' : 'st' : 'nd' : 'rd' : 'th')); 
     return $cdnl.$ext; 
    }

    语法:

    
    

    40. 限制文件下载的速度

    // set the download rate limit (=> 20,5 kb/s)
    $download_rate = 20.5;
    if(file_exists($local_file) && is_file($local_file)) {
    // send headers
    header('Cache-control: private');
    header('Content-Type: application/octet-stream');
    header('Content-Length: '.filesize($local_file));
    header('Content-Disposition: filename='.$download_file);

    // flush content
    flush();
    // open file stream
    $file = fopen($local_file,"r");
    while(!feof($file)) {

    // send the current file part to the browser
    print fread($file,round($download_rate * 1024));

    // flush the content to the browser
    flush();

    // sleep one second
    sleep(1);
    }

    // close file stream
    fclose($file);}
    else {
    die('Error: The file '.$local_file.' does not exist!');
    }
    ?>

    41. 把文本转换成图片

    
    

    42. 获取远程文件的大小

    语法:

    
    

    43. 使用 imagebrick 进行 pdf 到图像的转换

    
    

    44. 使用 tinyurl 生成短网址

     save as):\n\t\t";
     echo "\n\t\t";
     echo "\n\t\t";
     echo "\n\t\t";
     echo "\n";
    }

    46. Facebook 样式的时间戳

    $periods  = array("second","minute","hour","day","week","month","year","decade");
    $lengths = array("60","60","24","7","4.35","12","10");

    $now = time();
    $unix_date = strtotime($date);

    // check validity of date
    if(empty($unix_date)) {
    return "Bad date";
    }
    // is it future date or past date
    if($now > $unix_date) {
    $difference = $now - $unix_date;
    $tense = "ago";

    } else {
    $difference = $unix_date - $now;
    $tense = "from now";
    }

    for($j = 0; $difference >= $lengths[$j] && $j < count($lengths)-1; $j++) {
    $difference /= $lengths[$j];
    }

    $difference = round($difference);

    if($difference != 1) {
    $periods[$j].= "s";
    }

    return "$difference $periods[$j] {$tense}";
    }

    语法:

    
    

    文章转自:

    原文链接:https://www.f2er.com/php/20353.html

    猜你在找的PHP相关文章