可爱熊个人博客

substr(),mb_substr()及mb_strcut的区别和用法

substr()函数可以 分割文字,但要分割的文字如果包括中文字符往往会遇到问题,这时可以用mb_substr()/mb_strcut这个函数,mb_substr() /mb_strcut的用法与substr()相似,只是在mb_substr()/mb_strcut最后要加入多一个参数,以设定字符串的编码,但是 一般的服务器都没打开php_mbstring.dll,需要在php.ini在把php_mbstring.dll打开。

举个例子:
<?php
echo mb_substr(‘这样一来我的字符串就不会有乱码^_^’, 0, 7, ‘utf-8’);
?>
输出:这样一来我的字
<?php
echo mb_strcut(‘这样一来我的字符串就不会有乱码^_^’, 0, 7, ‘utf-8’);
?>
输出:这样一
从上面的例子可以看出,mb_substr是按字来切分字符,而mb_strcut是按字节来切分字符,但是都不会产生半个字符的现象……

mbstring 函数的说明: Read More…

Tags: ,

PHP教程:strlen与mb_strlen字符串长度函数

懂PHP的都知道strlen与mb_strlen是求字符串长度的函数,但是对于一些初学者来说,如果不看手册,也许不太清楚其中的区别。

  先看这样一段代码吧(先决条件是:字符编码为UTF-8):

 <?
  str = ’懂PHP的都知道strlen与mb_strlen是求字符串长度的函数’;
  echo strlen(str)’.
’.mb_strlen(str,’utf-8’);
  ?>

  运行上述代码,返回值如下:

  66

  34

  怎么样?strlen中,中文是三个字节的长度,英文则是一个字节的长度!mb_strlen中,都被计算为一字节的长度!所以,我们有时候用substr来截取UTF-8中文字符串的时候,经常会出现乱码,就是这个原因了! Read More…

Tags:

关于MemCache的起源、安装过程和简单的使用方法

缘起: 在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载。缓存是解决这个问题的好办法。但是ASP.NET中的虽然已经可以实现对页面局部进行缓存,但还是不够灵活。此时Memcached或许是你想要的。

Memcached是什么?
Memcached是由Danga Interactive开发的,高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。

Memcached能缓存什么?
通过在内存里维护一个统一的巨大的hash表,Memcached能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。

Memcached快么?
非常快。Memcached使用了libevent(如果可以的话,在linux下使用epoll)来均衡任何数量的打开链接,使用非阻塞的网络I/O,对内部对象实现引用计数(因此,针对多样的客户端,对象可以处在多样的状态), 使用自己的页块分配器和哈希表,因此虚拟内存不会产生碎片并且虚拟内存分配的时间复杂度可以保证为O(1).。

Danga Interactive为提升Danga Interactive的速度研发了Memcached。目前,LiveJournal.com每天已经在向一百万用户提供多达两千万次的页面访问。而这些,是由一个由web服务器和数据库服务器组成的集群完成的。Memcached几乎完全放弃了任何数据都从数据库读取的方式,同时,它还缩短了用户查看页面的速度、更好的资源分配方式,以及Memcache失效时对数据库的访问速度。

Memcached的特点Memcached的缓存是一种分布式的,可以让不同主机上的多个用户同时访问, 因此解决了共享内存只能单机应用的局限,更不会出现使用数据库做类似事情的时候,磁盘开销和阻塞的发生。

Read More…

Tags:

php的curl实现get和post

类似于dreamhost这类主机服务商,是显示fopen的使用的。使用php的curl可以实现支持FTP、FTPS、HTTP HTPPS SCP SFTP TFTP TELNET DICT FILE和LDAP。curl 支持SSL证书、HTTP POST、HTTP PUT 、FTP 上传,kerberos、基于HTT格式的上传、代理、cookie、用户+口令证明、文件传送恢复、http代理通道就最常用的来说,是基于http的get和post方法。

代码实现:

1、http的get实现

$ch = curl_init(“/“) ;
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ;
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true) ;
$output = curl_exec($ch) ;
$fh = fopen(“out.html”, ‘w’) ;
fwrite($fh, $output) ;
fclose($fh) ;

Read More…

Tags: , ,

PHP缓存MEMCACHE 应用详解-完整版

Memcache函数库是在PECL(PHP Extension Community Library)中,主要作用是搭建大容量的内存数据的临时存放区域,在分布式的时候作用体现的非常明显,否则不建议使用。在ubuntu上安装完运行的时候报错:

/usr/local/memcached/bin/memcached: error while loading shared libraries: libevent-1.4.so.2:

cannot open shared object file: No such file or Directory
按照:《libeven、memcached、libmemcache安装》中的方法,使用:
sudo ln -s /usr/local/lib/libevent-1.4.so.2 /usr/lib/libevent-1.4.so.2

可以修正这个BUG
通过新得立安装php的memcached模块,注销/etc/php5/conf.d/memcached.ini里面的“;”,重启apache,调用phpinfo()出现memcached的信息。 Read More…

Tags: ,

php 处理二维数组(去除重复项,排序,转换,去空白等)

1. PHP二维数组去重复项函数

PHP数组去除重复项 有个内置函数array_unique (),但是php的 array_unique函数只适用于一维数组,对多维数组并不适用,以下提供一个二维数组 的 array_unique函数

Php代码 复制代码
  • //二维数组去掉重复值   
  • function unique_arr($array2D){   
  •     foreach ($array2D as $v){   
  •          $v = join(“,”,$v);  //降维,也可以用implode,将一维数组转换为用逗号连接的字符串   
  •          $temp[] = $v;   
  •      }   
  •      $temp = array_unique($temp);    //去掉重复的字符串,也就是重复的一维数组   
  •     foreach ($temp as $k => $v){   
  •         $temp[$k] = explode(“,”,$v);   //再将拆开的数组重新组装   
  •     }   
  •     return $temp;   
  • }  
  • //二维数组去掉重复值
    function unique_arr($array2D){
    	foreach ($array2D as $v){
             $v = join(",",$v);  //降维,也可以用implode,将一维数组转换为用逗号连接的字符串
             $temp[] = $v;
         }
         $temp = array_unique($temp);    //去掉重复的字符串,也就是重复的一维数组
        foreach ($temp as $k => $v){
            $temp[$k] = explode(",",$v);   //再将拆开的数组重新组装
        }
        return $temp;
    }

      Read More…

    Tags:

    PHP:IP转换整形(ip2long)

    如何将四个字段以点分开的IP网络址协议地址转换成整数呢?PHP里有这么一个函数ip2long.比如 
    <?php 
    echo ip2long(“10.2.1.3”); 
    ?> 
    我们将得到 
    167903491 

    这是如何计算的,目前我知道有两个算法。其一 
    <?php 
    function ip2int($ip){ 
       //我们先把ip分为四段,$ip1,$ip2,$ip3,$ip4 
       list($ip1,$ip2,$ip3,$ip4)=explode(“.”,$ip); 
       //然后第一段乘以256的三次方,第二段乘以256的平方,第三段乘以256 
       //这即是我们得到的值 
       return $ip1*pow(256,3)+$ip2*pow(256,2)+$ip3*256+$ip4; 

    ?> 

    其二,用位运算 
    <?php 
    function ip2int($ip){ 
       list($ip1,$ip2,$ip3,$ip4)=explode(“.”,$ip); 
       return ($ip1<<24)|($ip2<<16)|($ip3<<8)|($ip4); 

    ?> 

    我们会发现,有些ip转化成整数后,是负的,这是因为得到的结果是有符号整型,最大值是2147483647.要把它转化为无符号的,可以用 
    sprintf(“%u”,ip2long($ip); 

    就能转换为正整数。而且得到的结果用long2ip也可以正常转换回原来的ip地址。也可以用ip2long来验证一个ip是否是有效的,如 
    <?php 
    function chk_ip($ip){ 
       if(ip2long($ip)==”-1″) { 
          return false; 
       } 
       return true; 

    //应用 
    var_export(chk_ip(“10.111.149.42”)); 
    var_export(chk_ip(“10.111.256.42”)); 
    ?> 
    将输出true和false

    Tags:

    linux下Memcache的安装和PHP中的配置详解

    在网上看了很多linux下Memcache的安装五花八门,让我重装了四五次。最终还是装好了。
    我把装的过程和容易出错的地方给大家列出来了。希望没有装过的朋友能看到我的文章,
    一次搞定linux下的memcache.

    linux下的Memcache安装:

    1、安装libevent:

    下载地址:http://monkey.org/~provos/libevent/

    安装位置:/usr/local/libevent (根据自己喜好而定,建议外部程序库都装到/usr/local对应的目录下)

    安装过程:

    #下载解压 Read More...

    Tags:

    Memcache Win32 的安装与PHP中的配置和Memcache用法实例

    Memcache 相关介绍http://edu.codepub.com/2009/0614/6129.php
    memcache是一个高性能的分布式的内存对象缓存系统,它能够用来存储各种
    格式的数据,包括图像、视频、文件以及数据库检索的结果等
    使用Memcache的网站一般流量都是比较大的,为了缓解数据库的压力,
    让Memcache作为一个缓存区域,把部分信息保存在内存中,在前端能
    够迅速的进行存取。

    1.下载:Memcache Win32
    http://www.php100.com/html/download/server/2010/0125/3857.html
    或到官方:www.jehiah.cz/projects/memcached-win32/ Read More…

    Tags:

    memcache实现计数器和数据压缩

    一:访问统计

    //访问统计
    $memcache = new Memcache;
    $memcache->connect(‘localhost’, 11211) or die (“Could not connect”);
    if($s=$memcache->get(‘a’)) {
       $s=$s+1;
       $memcache->set(‘a’,$s);
    }
    else
    $memcache->set(‘a’,1);
    echo ‘访问结果为:’.$s;
    ?>

    其实我们可以用increment方法代替上面的做法  Read More…

    Tags: