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 相关文章推荐
测试您的 PHP 水平的题目
May 30 PHP
php cookie 作用范围?不要在当前页面使用你的cookie
Mar 24 PHP
PHP 字符串 小常识
Jun 05 PHP
php实现查看邮件是否已被阅读的方法
Dec 03 PHP
PHP获取客户端真实IP地址的5种情况分析和实现代码
Jul 08 PHP
ThinkPHP中ajax使用实例教程
Aug 22 PHP
php中动态修改ini配置
Oct 14 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
Apr 07 PHP
PHP简单字符串过滤方法示例
Sep 04 PHP
php each 返回数组中当前的键值对并将数组指针向前移动一步实例
Nov 22 PHP
PHP验证码类ValidateCode解析
Jan 07 PHP
确保Laravel网站不会被嵌入到其他站点中的方法
Oct 18 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中使用Oracle数据库(3)
2006/10/09 PHP
php中DOMElement操作xml文档实例演示
2013/03/26 PHP
深入探讨<br />和 \r\n两者有什么区别??
2013/06/05 PHP
PHP实现负载均衡下的session共用功能
2018/04/17 PHP
php常用日期时间函数实例小结
2019/07/04 PHP
JS模拟多线程
2007/02/07 Javascript
5分钟理解JavaScript中this用法分享
2013/11/09 Javascript
jquery实现不同大小浏览器使用不同的css样式表的方法
2014/04/02 Javascript
jquery.mobile 共同布局遇到的问题小结
2015/02/10 Javascript
JavaScript中的普通函数与构造函数比较
2015/04/07 Javascript
javascript实现tab切换的两个实例
2015/11/05 Javascript
JS简单实现点击复制链接的方法
2016/08/03 Javascript
AngularJS 实现JavaScript 动画效果详解
2016/09/08 Javascript
Bootstrap基本样式学习笔记之图片(6)
2016/12/07 Javascript
jQuery层级选择器实例代码
2017/02/06 Javascript
JavaScript去掉数组重复项的方法分析【测试可用】
2018/07/19 Javascript
JavaScript笛卡尔积超简单实现算法示例
2018/07/30 Javascript
vue动画打包后失效问题的解决方法
2018/09/18 Javascript
jQuery访问json文件中数据的方法示例
2019/01/28 jQuery
微信小程序拼接图片链接无底洞深入探究
2019/09/03 Javascript
JS内置对象和Math对象知识点详解
2020/04/03 Javascript
python操作xml文件示例
2014/04/07 Python
简单了解Python中的几种函数
2017/11/03 Python
python使用Pycharm创建一个Django项目
2018/03/05 Python
Python项目 基于Scapy实现SYN泛洪攻击的方法
2019/07/23 Python
python3爬虫中异步协程的用法
2020/07/10 Python
CSS3实现图片抽屉式效果的示例代码
2019/11/06 HTML / CSS
HTML5实现的图片无限加载的瀑布流效果另带边框圆角阴影
2014/03/07 HTML / CSS
3种方式实现瀑布流布局小结
2019/09/05 HTML / CSS
美国最古老的精致书写工具制造商:A.T. Cross(高仕)
2018/01/30 全球购物
医疗纠纷调解协议书
2015/08/06 职场文书
2016年暑假学生家长评语
2015/12/01 职场文书
OpenCV-Python实现人脸磨皮算法
2021/06/07 Python
python实现简单石头剪刀布游戏
2021/10/24 Python
vue3使用vuedraggable实现拖拽功能
2022/04/06 Vue.js
gtx1650怎么样 gtx1650显卡相当于什么级别
2022/04/08 数码科技