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


Posted in PHP onApril 06, 2016

本文我们就来分享一下我收集的一些超级有用的PHP代码片段。一起来看一看吧!
1.创建数据URI

数据URI在嵌入图像到HTML / CSS / JS中以节省HTTP请求时非常有用,并且可以减少网站的加载时间。下面的函数可以创建基于$file的数据URI。

function data_uri($file, $mime) {
 $contents=file_get_contents($file);
 $base64=base64_encode($contents);
 echo "data:$mime;base64,$base64";
}

2.合并JavaScript和CSS文件

另一个可以尽量减少HTTP请求和节省页面加载时间的好建议是:合并你的CSS和JS文件。虽然我更建议大家使用专用插件(例如minify),但使用PHP来合并文件也非常容易。我们来看一下:

function combine_my_files($array_files, $destination_dir, $dest_file_name){
 if(!is_file($destination_dir . $dest_file_name)){ //continue only if file doesn't exist
 $content = "";
 foreach ($array_files as $file){ //loop through array list
 $content .= file_get_contents($file); //read each file
 }
 //You can use some sort of minifier here
 //minify_my_js($content);
 $new_file = fopen($destination_dir . $dest_file_name, "w" ); //open file for writing
 fwrite($new_file , $content); //write to destination
 fclose($new_file);
 return '<script src="'. $destination_dir . $dest_file_name.'"></script>'; //output combined file
 }else{
 //use stored file
 return '<script src="'. $destination_dir . $dest_file_name.'"></script>'; //output combine file
 }
}

并且,用法是这样的:

$files = array(
 'http://example/files/sample_js_file_1.js',
 'http://example/files/sample_js_file_2.js',
 'http://example/files/beautyquote_functions.js',
 'http://example/files/crop.js',
 'http://example/files/jquery.autosize.min.js',
 );
echo combine_my_files($files, 'minified_files/', md5("my_mini_file").".js");

3.查看你的电子邮件是否已读

当发送电子邮件时,你会希望知道你的邮件是否已读。这里有一个非常有趣的代码片段,它可以记录阅读你邮件的IP地址,以及实际的日期和时间。

<?
error_reporting(0);
Header("Content-Type: image/jpeg");
//Get IP
if (!empty($_SERVER['HTTP_CLIENT_IP']))
{
 $ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
{
 $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
 $ip=$_SERVER['REMOTE_ADDR'];
}
//Time
$actual_time = time();
$actual_day = date('Y.m.d', $actual_time);
$actual_day_chart = date('d/m/y', $actual_time);
$actual_hour = date('H:i:s', $actual_time);
//GET Browser
$browser = $_SERVER['HTTP_USER_AGENT'];
//LOG
$myFile = "log.txt";
$fh = fopen($myFile, 'a+');
$stringData = $actual_day . ' ' . $actual_hour . ' ' . $ip . ' ' . $browser . ' ' . "\r\n";
fwrite($fh, $stringData);
fclose($fh);
//Generate Image (Es. dimesion is 1x1)
$newimage = ImageCreate(1,1);
$grigio = ImageColorAllocate($newimage,255,255,255);
ImageJPEG($newimage);
ImageDestroy($newimage);
?>

4.从网页提取关键词

正如这小标题所说的那样:这个代码片段能让你轻易地从网页中提取元关键词。

$meta = get_meta_tags('http://www.emoticode.net/');
$keywords = $meta['keywords'];
// Split keywords
$keywords = explode(',', $keywords );
// Trim them
$keywords = array_map( 'trim', $keywords );
// Remove empty values
$keywords = array_filter( $keywords );
print_r( $keywords );

5.查找页面上的所有链接

使用DOM,你可以轻松地抓取来网页上的所有链接。这里有一个工作示例:

$html = file_get_contents('http://www.example.com');
$dom = new DOMDocument();
@$dom->loadHTML($html);
// grab all the on the page
$xpath = new DOMXPath($dom);
$hrefs = $xpath->evaluate("/html/body//a");
for ($i = 0; $i < $hrefs->length; $i++) {
 $href = $hrefs->item($i);
 $url = $href->getAttribute('href');
 echo $url.'<br />';
}

6.自动转换URL为可点击的超链接

在WordPress中,如果你想在字符串中自动转换所有的URL成可点击的超链接,那么使用内置函数make_clickable()可以让你心想事成。如果你需要在WordPress之外这么做,那么你可以在wp-includes/formatting.php参考该函数的源代码:

function _make_url_clickable_cb($matches) {
$ret = '';
$url = $matches[2];
if ( empty($url) )
return $matches[0];
// removed trailing [.,;:] from URL
if ( in_array(substr($url, -1), array('.', ',', ';', ':')) === true ) {
$ret = substr($url, -1);
$url = substr($url, 0, strlen($url)-1);
}
return $matches[1] . "<a href=\"$url\" rel=\"nofollow\">$url</a>" . $ret;
}
function _make_web_ftp_clickable_cb($matches) {
$ret = '';
$dest = $matches[2];
$dest = 'http://' . $dest;
if ( empty($dest) )
return $matches[0];
// removed trailing [,;:] from URL
if ( in_array(substr($dest, -1), array('.', ',', ';', ':')) === true ) {
$ret = substr($dest, -1);
$dest = substr($dest, 0, strlen($dest)-1);
}
return $matches[1] . "<a href=\"$dest\" rel=\"nofollow\">$dest</a>" . $ret;
}
function _make_email_clickable_cb($matches) {
$email = $matches[2] . '@' . $matches[3];
return $matches[1] . "<a href=\"mailto:$email\">$email</a>";
}
function make_clickable($ret) {
$ret = ' ' . $ret;
// in testing, using arrays here was found to be faster
$ret = preg_replace_callback('#([\s>])([\w]+?://[\w\\x80-\\xff\#$%&~/.\-;:=,?@\[\]+]*)#is', '_make_url_clickable_cb', $ret);
$ret = preg_replace_callback('#([\s>])((www|ftp)\.[\w\\x80-\\xff\#$%&~/.\-;:=,?@\[\]+]*)#is', '_make_web_ftp_clickable_cb', $ret);
$ret = preg_replace_callback('#([\s>])([.0-9a-z_+-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,})#i', '_make_email_clickable_cb', $ret);
// this one is not in an array because we need it to run last, for cleanup of accidental links within links
$ret = preg_replace("#(<a( [^>]+?>|>))<a [^>]+?>([^>]+?)</a></a>#i", "$1$3</a>", $ret);
$ret = trim($ret);
return $ret;
}

7.在你的服务器上下载并保存远程图像

在远程服务器上下载一个图像,并将其保存在自己的服务器上,在建立网站时很有用,而且这也很容易做到。下面的这两行代码就能为你办到。

$image = file_get_contents('http://www.url.com/image.jpg');
file_put_contents('/images/image.jpg', $image); //Where to save the image

8.检测浏览器语言

如果你的网站使用多种语言,那么检测浏览器语言,并将这种语言作为默认语言会很有用。下面的代码将返回客户浏览器使用的语言。

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

9.全文显示Facebook粉丝的数量

如果你的网站或博客有一个Facebook的页面,那么你可能想要显示你有多少个粉丝。这个代码片段可以帮助你获取Facebook粉丝的数量。不要忘记在第二行添加你的页面ID。页面ID可以在地址http://facebook.com/yourpagename/info找到。

<?php
$page_id = "302807633129400";
$xml = @simplexml_load_file("http://api.facebook.com/restserver.php?method=facebook.fql.query&query=SELECT%20fan_count%20FROM%20page%20WHERE%20page_id=".$page_id."") or die ("a lot");
$fans = $xml->page->fan_count;
echo $fans;
?>

以上就是本文的全部内容,希望对大家的学习有所帮助。

PHP 相关文章推荐
php5中类的学习
Mar 28 PHP
php短域名转换为实际域名函数
Jan 17 PHP
php中转义mysql语句的实现代码
Jun 24 PHP
服务器变量 $_SERVER 的深入解析
Jul 02 PHP
php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
Nov 14 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
Sep 24 PHP
php使用for语句输出三角形的方法
Jun 09 PHP
PHP 中 Orientation 属性判断上传图片是否需要旋转
Oct 16 PHP
PHP水印类,支持添加图片、文字、填充颜色区域的实现
Feb 04 PHP
CI(CodeIgniter)框架视图中加载视图的方法
Mar 24 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
Jul 22 PHP
PHP实现登录注册之BootStrap表单功能
Sep 03 PHP
10个对初学者非常有用的PHP技巧
Apr 06 #PHP
yii2.0实现pathinfo的形式访问的配置方法
Apr 06 #PHP
PHP实现的DES加密解密实例代码
Apr 06 #PHP
php使用正则验证中文
Apr 06 #PHP
php HTML无刷新提交表单
Apr 05 #PHP
PHP如何使用Memcached
Apr 05 #PHP
初识PHP中的Swoole
Apr 05 #PHP
You might like
对Session和Cookie的区分与解释
2007/03/16 PHP
PHP下通过file_get_contents的代理使用方法
2011/02/16 PHP
关于php mvc开发模式的感想
2011/06/28 PHP
PHP调用Linux命令权限不足问题解决方法
2015/02/07 PHP
PHP获取访问页面HTTP状态码的实现代码
2016/11/03 PHP
记Laravel调用Gin接口调用formData上传文件的实现方法
2019/12/12 PHP
Javascript 读取操作Sql中的Xml字段
2014/10/09 Javascript
JavaScript 事件入门知识
2015/04/13 Javascript
Angular中$compile源码分析
2016/01/28 Javascript
JS验证逗号隔开可以是中文字母数字
2016/04/22 Javascript
JS控制文本域只读或可写属性的方法
2016/06/24 Javascript
ReactJs快速入门教程(精华版)
2016/11/28 Javascript
jquery插件锦集【推荐】
2016/12/16 Javascript
微信小程序的部署方法步骤
2018/09/04 Javascript
实例介绍JavaScript中多种组合继承
2019/01/20 Javascript
解决layui轮播图有数据不显示的情况
2019/09/16 Javascript
JS+DIV实现拖动效果
2020/02/11 Javascript
Vue通过Blob对象实现导出Excel功能示例代码
2020/07/31 Javascript
python爬虫入门教程--正则表达式完全指南(五)
2017/05/25 Python
利用Python如何实现数据驱动的接口自动化测试
2018/05/11 Python
python遍历文件夹,指定遍历深度与忽略目录的方法
2018/07/11 Python
使用11行Python代码盗取了室友的U盘内容
2018/10/23 Python
Python 多线程不加锁分块读取文件的方法
2018/12/11 Python
Django后台admin的使用详解
2019/07/08 Python
Python3实现建造者模式的示例代码
2020/06/28 Python
CSS3制作圆形滚动进度条动画的示例
2020/11/05 HTML / CSS
JackJones官方旗舰店:杰克琼斯男装
2018/03/27 全球购物
公共汽车、火车和飞机票的通用在线预订和销售平台:INFOBUS
2019/11/30 全球购物
Habitat家居英国官方网站:沙发、家具、照明、厨房和户外
2019/12/12 全球购物
JACK & JONES荷兰官网:男士服装和鞋子
2021/03/07 全球购物
秋季红领巾广播稿
2014/01/27 职场文书
党员批评与自我批评思想汇报(集锦)
2014/09/14 职场文书
解除劳动合同协议书
2014/09/17 职场文书
董事长岗位职责
2015/02/13 职场文书
2016中秋节问候语
2015/11/11 职场文书
JavaScript实现班级抽签小程序
2021/05/19 Javascript