教程php更改目录及子目录下所有的文件后缀

今天遇到要改变当前目录下指定类型的文件类型,本来想要用批处理来做这个,结果没找到合适。就自己去查了下资料,用Php来处理一下。

不是很经常处理文件,所以对遍历目录还不是很熟悉,找了一下资料,自己修改一下。

让大家看看是否需要完善的

代码主要的目的是 批量更改 文件后缀 由于淘宝数据包图片类型的不同 所以要改一下适合的。 (全文…)

PHP MemCached高级缓存配置

1.Memcache相关介绍

memcache是一个高性能的分布式的内存对象缓存系统,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。

使用Memcache的网站一般流量都是比较大的,为了缓解数据库的压力,让Memcache作为一个缓存区域,把部分信息保存在内存中,在前端能够迅速的进行存取。 (全文…)

ubuntu 编译安装php 5.3.3+memcache

//编译安装php 5.3.3

由于php5.3.X已经自带了php-fpm所以不需要打补丁

# sudo ./configure  –prefix=/usr/local/php-5.3.3 –with-mcrypt –with-gettext –with-mysql –with-gd –with-jpeg-dir –with-png-dir –with-curl –with-freetype-dir –enable-gd-native-ttf –enable-mbstring –enable-sockets –with-png-dir –with-pdo-mysql –enable-fpm –with-zlib –with-fpm-user=daemon –with-fpm-group=daemon
#  sudo rm -rf /usr/local/php-5.3.3
#  sudo make
#  sudo make install

//编译安装 memcache

sudo /usr/local/php-5.3.3/bin/phpize

sudo ./configure –with-php-config=/usr/local/php-5.3.3/bin/php-config

//修改php.ini配置文件

添加:

extension_dir = “/usr/local/php-5.3.3/lib/php/extensions/no-debug-non-zts-20090626/”

extension=memcache.so

PHP MemCached 高级缓存应用

Memcache常用方法

Memcache::add — 添加一个值,如果已经存在,则返回false
Memcache::addServer — 添加一个可供使用的服务器地址
Memcache::close — 关闭一个Memcache对象
Memcache::connect — 创建一个Memcache对象
Memcache::debug — 控制调试功能
Memcache::decrement — 对保存的某个key中的值进行减法操作
Memcache::delete — 删除一个key值
Memcache::flush — 清除所有缓存的数据
Memcache::get — 获取一个key值
Memcache::getExtendedStats — 获取进程池中所有进程的运行系统统计
Memcache::getServerStatus — 获取运行服务器的参数
Memcache::getStats — 返回服务器的一些运行统计信息
Memcache::getVersion — 返回运行的Memcache的版本信息
Memcache::increment — 对保存的某个key中的值进行加法操作
Memcache::pconnect — 创建一个Memcache的持久连接对象
Memcache::replace — R对一个已有的key进行覆写操作
Memcache::set — 添加一个值,如果已经存在,则覆写
Memcache::setCompressThreshold — 对大于某一大小的数据进行压缩
Memcache::setServerParams — 在运行时修改服务器的参数

Memcache方法使用

1 <?php
2  $memcache = new memcache;
3  $memcache->connect(‘127.0.0.1′, 11211) or die(“连接失败”);
4  $memcache->set(‘name’, ‘张三’);
5 $val = $memcache->get(‘name’);
6 ?>

注:set方法的完整版本,set(键名,键值,是否压缩,保持时间)

1 <?php
2 $memcache = new memcache;
3 $memcache -> connect(‘127.0.0.1′, 11211) or die(“连接失败”);
4 $memcache -> set(‘name’, array(‘一个’,'两个’));
5 $val = $memcache->get(‘name’);
6 print_r($val);
7 $memcache -> close();
8 ?>

php 如何清空字符串中的HTML标签过滤Html

要过滤字符串中所有的html标签有两种方法一种是我们自己写一个函数,用正则过滤,一个是用php自带函数strip_tags哦。
function clear_html_label($html)
{
$search = array (“‘<script[^>]*?>.*?</script>’si”, “‘<[/!]*?[^<>]*?>’si”, “‘([rn])[s]+’”, “‘&(quot|#34);’i”, “‘&(amp|#38);’i”, “‘&(lt|#60);’i”, “‘&(gt|#62);’i”, “‘&(nbsp|#160);’i”, “‘&(iexcl|#161);’i”, “‘&(cent|#162);’i”, “‘&(pound|#163);’i”, “‘&(copy|#169);’i”, “‘&#(d+);’e”);
$replace = array (“”, “”, “1″, “”", “&”, “<”, “>”, ” “, chr(161), chr(162), chr(163), chr(169), “chr(1)”);
return preg_replace($search, $replace, $html);
}
//实例应用
$string =’aaa<br /> <script>fdsafsa’;
echo clear_html_label($string);//aaa fdsafsa
//利用php自带函数strip_tags();
echo strip_tags($string);//aaa fdsafsa
总结,
上面二个函数得出的结果完全相同,一个是用户自定义的过滤所有html函数,一个是php内置函数,但在效绿上来说php的strip_tags()函数,肯定要高很多。至少为什么我就不说多了。
php 如何清空字符串中的HTML标签

要过滤字符串中所有的html标签有两种方法一种是我们自己写一个函数,用正则过滤,一个是用php自带函数strip_tags哦。 function clear_html_label($html) {  $search = array (“‘<script[^>]*?>.*?</script>’si”, “‘<[/!]*?[^<>]*?>’si”, “‘([rn])[s]+’”, “‘&(quot|#34);’i”, “‘&(amp|#38);’i”, “‘&(lt|#60);’i”, “‘&(gt|#62);’i”, “‘&(nbsp|#160);’i”, “‘&(iexcl|#161);’i”, “‘&(cent|#162);’i”, “‘&(pound|#163);’i”, “‘&(copy|#169);’i”, “‘&#(d+);’e”);      $replace = array (“”, “”, “1″, “”", “&”, “<”, “>”, ” “, chr(161), chr(162), chr(163), chr(169), “chr(1)”);      return preg_replace($search, $replace, $html); }  //实例应用 $string =’aaa<br /> <script>fdsafsa’; echo clear_html_label($string);//aaa fdsafsa  //利用php自带函数strip_tags(); echo strip_tags($string);//aaa fdsafsa  总结, 上面二个函数得出的结果完全相同,一个是用户自定义的过滤所有html函数,一个是php内置函数,但在效绿上来说php的strip_tags()函数,肯定要高很多。至少为什么我就不说多了。php 如何清空字符串中的HTML标签

PHP获取表单textarea数据中的换行问题

闲来无事,在网上看到一篇关于php表单转换textarea换行符的文章,看完后,根据以往经验,感觉上这篇文章中的一些信息并不准确…于是便自己亲自对php获取表单数据中的换行符问题进行研究:
测试页面代码:

闲来无事,在网上看到一篇关于php表单转换textarea换行符的文章,看完后,根据以往经验,感觉上这篇文章中的一些信息并不准确…于是便自己亲自对php获取表单数据中的换行符问题进行研究:测试页面代码: (全文…)

PHP解压网页GZIP 函数

现在很多网页都是GZIP压缩的,如果用PHP取过来发现是一堆乱码,可以用GZIP函数类解压,但有时候PHP编译没编译GZIP
可用下面函数代替:
<?php
if (!function_exists ( ‘gzdecode’ )) {
$flags = ord ( substr ( $data, 3, 1 ) );
$headerlen = 10;
$extralen = 0;
$filenamelen = 0;
if ($flags & 4) {
$extralen = unpack ( ‘v’, substr ( $data, 10, 2 ) );
$extralen = $extralen [1];
$headerlen += 2 + $extralen;
}
if ($flags & 8) // Filename
$headerlen = strpos ( $data, chr ( 0 ), $headerlen ) + 1;
if ($flags & 16) // Comment
$headerlen = strpos ( $data, chr ( 0 ), $headerlen ) + 1;
if ($flags & 2) // CRC at end of file
$headerlen += 2;
$unpacked = @gzinflate ( substr ( $data, $headerlen ) );
if ($unpacked === FALSE)
$unpacked = $data;
return $unpacked;
}

现在很多网页都是GZIP压缩的,如果用PHP取过来发现是一堆乱码,可以用GZIP函数类解压,但有时候PHP编译没编译GZIP可用下面函数代替:<?phpif (!function_exists ( ‘gzdecode’ )) { $flags = ord ( substr ( $data, 3, 1 ) ); $headerlen = 10; $extralen = 0; $filenamelen = 0; if ($flags & 4) { $extralen = unpack ( ‘v’, substr ( $data, 10, 2 ) ); $extralen = $extralen [1]; $headerlen += 2 + $extralen; } if ($flags & 8) // Filename  $headerlen = strpos ( $data, chr ( 0 ), $headerlen ) + 1; if ($flags & 16) // Comment  $headerlen = strpos ( $data, chr ( 0 ), $headerlen ) + 1; if ($flags & 2) // CRC at end of file  $headerlen += 2; $unpacked = @gzinflate ( substr ( $data, $headerlen ) ); if ($unpacked === FALSE) $unpacked = $data; return $unpacked;}

php 如何清空字符串中的HTML标签

要过滤字符串中所有的html标签有两种方法一种是我们自己写一个函数,用正则过滤,一个是用php自带函数strip_tags哦。

function clear_html_label($html)
{
$search = array (“‘<script[^>]*?>.*?</script>’si”, “‘<[/!]*?[^<>]*?>’si”, “‘([rn])[s]+’”, “‘&(quot|#34);’i”, “‘&(amp|#38);’i”, “‘&(lt|#60);’i”, “‘&(gt|#62);’i”, “‘&(nbsp|#160);’i”, “‘&(iexcl|#161);’i”, “‘&(cent|#162);’i”, “‘&(pound|#163);’i”, “‘&(copy|#169);’i”, “‘&#(d+);’e”);
$replace = array (“”, “”, “1″, “”", “&”, “<”, “>”, ” “, chr(161), chr(162), chr(163), chr(169), “chr(1)”);

return preg_replace($search, $replace, $html);
}

//实例应用

$string =’aaa<br /> <script>fdsafsa’;
echo clear_html_label($string);//aaa fdsafsa

//利用php自带函数strip_tags(); www.zzarea.com
echo strip_tags($string);//aaa fdsafsa

/*
总结,
上面二个函数得出的结果完全相同,一个是用户自定义的过滤所有html函数,一个是php内置函数,但在效绿上来说php的strip_tags()函数,肯定要高很多。至少为什么我就不说多了。
*/

php 如何清空字符串中的HTML标签

统计用户在线时间的一种解决办法

一直以来,在web开发中,准确统计用户在线时间都是一个老大难的问题,虽然已经有很多人去尝试各种不同的方案,可是毕竟项目不同,所用到的方法也是千差万别,下面列出几个比较常用的方法:

首先介绍一下所涉及的数据表结构,四个字段:

uid<int(10)> :用户id
session_id<varchar(40)>  :用户登录后系统产生的session_id,PHP可是使用session_id()函数获取
login_time<int(10)>  :登录时间
logout_time<int(10)> :登出时间

1. 客户端定时发送请求到服务器端。实现方法是在用户登录后,将uid,session_id,login_time插入一条记录,然后在客户端js设定一个计时器,比如每10分钟向服务器端发送一个请求,以此来达到更新登出时间的目的,当然这个间隔时间设定的越短,数据可能会越准确,不过相应的系统的负载也会越高,这个可以根据实际情况设定一个合适的值。这种方法广泛应用于webgame上,因为webgame的几乎所有请求都是ajax请求,不用刷新页面,一旦刷新页面,这个计时器就失去了价值,这也是这个方法的局限性。

2. 服务器设定一个定时轮询的脚本。这个方法是在服务器端写一个定时执行的脚本,比如5分钟执行一次,根据数据库中的记录来判断每个会话的session_id是否还存在于服务器上,如果存在就更新logout_time,不存在就跳过。这样也能比较准确的统计在线时间,不过缺点是需要有服务器的控制权,不然无法设定定时脚本,linux系统可以通过crontab实现,windows系统可以通过计划任务来完成。如果你只是买的虚拟主机,那么这个方法也同样不适合你。

3. 在用户每次活动时更新一下登出时间。这样在用户不活动或者退出的时候,登出时间就自然而然的存在于数据库里了,这也是本文着重讨论的方案。下面给出实现方法。

首先,在用户登录成功后,记录下其uid,session_id,并将现在时间作为登陆时间,现在时间+600s作为登出时间,插入数据库。

$uid = $_SESSION['uid'] = $info['id'];

$session_id = $_SESSION['session_id'] = session_id();

$login_time = time();

$logout_time = time()+600;

$sql = “INSERT INTO member_login (uid,session_id,login_time,logout_time) values($uid,’$session_id’,$login_time,$logout_time)”;

mysql_query($sql);

然后在用户每次活动,也就是每点击一个页面时,如果session存在也就是处于登录状态时,更新用户登出时间

if($_SESSION['uid']){

$uid = $_SESSION['uid'];

$session_id = $_SESSION['session_id'];

$logout_time = time()+600;

$sql = “UPDATE member_login SET logout_time=$logout_time WHERE uid=$uid AND session_id=’$session_id’”;

mysql_query($sql);

}

这种方法的优点是相对来说实现起来比较简单,能够适用于大多数的网站,没有额外的服务器需求,而且也可以比较准确的统计用户的在线时间。
缺点也很明显,增加了数据库的更新操作,增加了系统的负载,不过对于中小型网站来说应该不是问题。

[PHP] – 压缩与解压Zip(PHPZip类)

PHPZip类来源:网络

visitFile()函数来源:http://topic.csdn.net/u/20071225/11/e6a8db84-df02-4622-987b-2a4ed4a5eef0.html (第14楼)

注:修改为可遍历子文件夹(替换遍历方法为visitFile());

添加GetZipComment()方法;

加上用法说明(注释部分)。 (全文…)