9段PHP实用功能的代码推荐


Posted in PHP onOctober 14, 2014

一、查看邮件是否已被阅读

当你在发送邮件时,你或许很想知道该邮件是否被对方已阅读。这里有段非常有趣的代码片段能够显示对方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);

     

?>

二、从网页中提取关键字

一段伟大的代码片段能够轻松的从网页中提取关键字。

$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 );

三、查找页面上的所有链接

使用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 />';

}

四、自动转换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;

}

五、创建数据URL

数据URL可以直接嵌入到HTML/CSS/JS中,以节省大量的 HTTP请求。 下面的这段代码可利用$file轻松创建数据URL。

function data_uri($file, $mime) {

  $contents=file_get_contents($file);

  $base64=base64_encode($contents);

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

}

六、从服务器上下载&保存一个远程图片 

当你在搭建网站时,从远程服务器下载某张图片并且将其保存在自己的服务器上,这一操作会经常用到。代码如下:

$image = file_get_contents('http://www.url.com/image.jpg');

file_put_contents('/images/image.jpg', $image); //Where to save the image

七、移除Remove Microsoft Word HTML Tag

当你使用Microsoft Word会创建许多Tag,比如font,span,style,class等。这些标签对于Word本身而言是非常有用的,但是当你从Word粘贴至网页时,你会发现很多无用的Tag。因此,下面的这段代码可帮助你删除所有无用的Word HTML Tag。

function cleanHTML($html) {

/// <summary>

/// Removes all FONT and SPAN tags, and all Class and Style attributes.

/// Designed to get rid of non-standard Microsoft Word HTML tags.

/// </summary>

// start by completely removing all unwanted tags

 

$html = ereg_replace("<(/)?(font|span|del|ins)[^>]*>","",$html);

 

// then run another pass over the html (twice), removing unwanted attributes

 

$html = ereg_replace("<([^>]*)(class|lang|style|size|face)=("[^"]*"|'[^']*'|[^>]+)([^>]*)>","<\1>",$html);

$html = ereg_replace("<([^>]*)(class|lang|style|size|face)=("[^"]*"|'[^']*'|[^>]+)([^>]*)>","<\1>",$html);

 

return $html

}

八、检测浏览器语言

如果你的网站上有多种语言,那么可以使用这段代码作为默认的语言来检测浏览器语言。该段代码将返回浏览器客户端使用的初始语言。

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;

}

九、显示Facebook 粉丝数量

如果你的网站或者博客上有内链的Facebook页面,你或许想知道拥有多少粉丝。这段代码将帮助你查看Facebook粉丝数,记住,别忘了在你的页面ID第二行添加该段代码。

<?php

    $page_id = "YOUR PAGE-ID";

    $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 相关文章推荐
基于mysql的bbs设计(三)
Oct 09 PHP
php中的数组操作函数整理
Aug 18 PHP
上传文件先创建目录 再上传到目录里面去
Dec 29 PHP
php表单提交问题的解决方法
Apr 12 PHP
如何用php获取程序执行的时间
Jun 09 PHP
ThinkPHP之用户注册登录留言完整实例
Jul 22 PHP
使用 PHPStorm 开发 Laravel
Mar 24 PHP
thinkphp如何获取客户端IP
Nov 03 PHP
php对文件夹进行相关操作(遍历、计算大小)
Nov 04 PHP
php7 安装yar 生成docker镜像
May 09 PHP
PHP多进程通信-消息队列使用
Mar 08 PHP
PHP工厂模式、单例模式与注册树模式实例详解
Jun 03 PHP
五款PHP代码重构工具推荐
Oct 14 #PHP
ThinkPHP 表单自动验证运用示例
Oct 13 #PHP
php 模拟 asp.net webFrom 按钮提交事件实例
Oct 13 #PHP
ThinkPHP表单自动验证实例
Oct 13 #PHP
Linux下安装oracle客户端并配置php5.3
Oct 12 #PHP
PHP依赖倒置(Dependency Injection)代码实例
Oct 11 #PHP
php实现设计模式中的单例模式详解
Oct 11 #PHP
You might like
php之可变变量的实例详解
2017/09/12 PHP
yii2.0整合阿里云oss上传单个文件的示例
2017/09/19 PHP
PHP添加文字水印或图片水印的水印类完整源代码与使用示例
2019/03/18 PHP
出现“不能执行已释放的Script代码”错误的原因及解决办法
2007/08/29 Javascript
IE和Firefox下javascript的兼容写法小结
2008/12/10 Javascript
jquery中获取select选中值的代码
2011/06/27 Javascript
用js来刷新当前页面保留参数的具体实现
2013/12/23 Javascript
jQuery实现表格颜色交替显示的方法
2015/03/09 Javascript
jquery实现邮箱自动填充提示功能
2015/11/17 Javascript
jQuery页面加载初始化的3种方法(推荐)
2016/06/02 Javascript
值得分享的JavaScript实现图片轮播组件
2016/11/21 Javascript
laydate.js日期时间选择插件
2017/01/04 Javascript
jQuery实现弹幕效果
2017/02/17 Javascript
微信小程序实现底部导航
2018/11/05 Javascript
vue+webpack中配置ESLint
2018/11/07 Javascript
jQuery实现点击旋转,再点击恢复初始状态动画效果示例
2018/12/11 jQuery
关于javascript中的promise的用法和注意事项(推荐)
2021/01/15 Javascript
[01:51]2014DOTA2西雅图邀请赛 MVP 外卡赛black场间采访
2014/07/09 DOTA
从零学python系列之新版本导入httplib模块报ImportError解决方案
2014/05/23 Python
Python解析xml中dom元素的方法
2015/03/12 Python
Python2.7基于淘宝接口获取IP地址所在地理位置的方法【测试可用】
2017/06/07 Python
Python中单、双下划线的区别总结
2017/12/01 Python
Python调用shell命令常用方法(4种)
2020/05/11 Python
Python如何合并多个字典或映射
2020/07/24 Python
Pycharm2020.1安装中文语言插件的详细教程(不需要汉化)
2020/08/07 Python
使用CSS3的font-face字体嵌入样式的方法讲解
2016/05/13 HTML / CSS
浅谈css3中的渐进增强和优雅降级
2017/12/01 HTML / CSS
人事专员的岗位职责
2014/03/01 职场文书
艺术节主持词
2014/04/02 职场文书
公司周年庆典策划方案
2014/05/17 职场文书
施工安全生产承诺书
2014/05/23 职场文书
2014年社区党建工作总结
2014/11/11 职场文书
2014年企业工会工作总结
2014/11/12 职场文书
试用期旷工辞退通知书
2015/04/17 职场文书
求职意向书范本
2015/05/11 职场文书
高中政治教学反思
2016/02/23 职场文书