10

PHP 截取字符串

分类: PHP编程 3 Comments

相信很多人都用PHP自带的substr();在截取中文字符串的时候遇到麻烦。
在这里贴一个把中文当作一个长度截取的函数

function cutstr($str, $len, $dot='...')
{
     $i = $ti = 0;
     if (strlen($str) < $len) return $str;
     $charset = is_utf8($str);
     if ($charset) {
         while ($ti < $len) {
         $t = ord($str[$i]);
         if ($t >= 224) {
             $i += 3;
         } elseif ($t >= 192) {
             $i += 2;
         } else {
             $i++;
         }
         if ($i>$len+1) break;
             $ti++;
         }
    } else {
        for($ti = 0; $ti < $len; $ti++) {
            $t = ord($str[$i]);
            if ($t > 127) {
                $i += 2;
            } else {
	   $i++;
            }
        }
    }
    $rt = substr($str, 0, $i);
    return $rt;
}
//识别字符串编码
function is_utf8($string) {
    return preg_match('%^(?:
        [\x09\x0A\x0D\x20-\x7E]            # ASCII
        | [\xC2-\xDF][\x80-\xBF]            # non-overlong 2-byte
        |  \xE0[\xA0-\xBF][\x80-\xBF]        # excluding overlongs
        | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}  # straight 3-byte
        |  \xED[\x80-\x9F][\x80-\xBF]        # excluding surrogates
        |  \xF0[\x90-\xBF][\x80-\xBF]{2}    # planes 1-3
        | [\xF1-\xF3][\x80-\xBF]{3}          # planes 4-15
        |  \xF4[\x80-\x8F][\x80-\xBF]{2}    # plane 16
   )*$%xs', $string);
}

14

PHP设计模式之观察者模式

分类: PHP编程 暂无评论

先抛出一个问题,你的网站有一个新用户注册,假设你需要给用户发送一条站内信,一封电子邮件,给用户分配一个宠物。

那么假定程序需要4个类,分别是用户类(User),电子邮件类(Email),站内信息类(Message),宠物类(Pet)。

那么要解决上面的问题,我们可以直接在 用户对象中用户注册成功后面计入其他3个对象相应的处理方法。这样目的达到了,是否合理呢?

试想,现在用户类需要改动,有可能就会导致注册成功后的动作不能正常启动,或者我改动了其他3个类,我就必须回到User类中寻找到相应的代码进行修改。这样会造成很多不必要的麻烦,如果是团队协作,那就真是头疼了。

在OOP编程中,我们一直在说一个东西就是避免组件之间紧密耦合。上面给出的解决办法就违反了这一原则。观察者模式提供了避免组件之间紧密耦合的一种方法。
Read the rest of this entry »

10

PHP设计模式之工厂模式

分类: PHP编程 暂无评论

在讲之前先做一个比喻,现在我需要生产一批货。

我首先需要2000件上衣,那么我发单上写的是:

代工工厂名称:XX上衣厂
货物需求数量:2000件
货物种类:上衣
联系人:李先生
电话:123

Read the rest of this entry »

09

memcache与memcached的区别

分类: PHP编程 暂无评论

memcache应该大家都很熟悉了。
但是经常会看到memcache和memcached,他们到底有什么区别呢?
我们经常也会看到http,httpd,imap,imapd。
通常在linux中的应用,服务端被称为“守护”,守护进程一般的命名就是与客户端应用名称加上字母”D”。例如“imap”是一个客户端连接到“imapd”守护进程。
memcache作为php的扩展安装好之后,就可以访问memcached服务器。 Read the rest of this entry »

05

PHP设计模式之单例模式

分类: PHP编程 暂无评论

有时候我们需要一个对象只做一个特定的事情,并且程序中只需要这一个对象,那么要保证这个对象只被实例化一次,很多情况下很多人的做事是用引用。这样整个程序在运行过程中只使用这一个对象。

在OOP中,这种做法可能不被允许,复杂的项目或者多人开发的应用中这样做可能会有很多头疼的问题,因为有可能在其他地方错误的将这个对象再次实例化,所以我们需要在这个对象本身就控制这个问题,这里就要将到一种常用的设计模式:单例模式。
Read the rest of this entry »

02

URL缩短服务的实现(Bit.ly,j.mp,tinyURL,Go.ly…)

分类: PHP编程 暂无评论

我所知道的URL缩短服务是从Twitter使用tinyurl.com来缩短微薄中的域名开始流行起来的,国内的新浪,腾讯微薄都使用了。

Twitter最开始使用tinyurl.com,现在在用的是Bit.ly。

为什么需要URL缩短业服务?

URL缩短服务简单的说就是把一个很长的url地址做成一个很短的url来跳转。这样的好处就是可以把原本一长串的URL地址变成很少的字符。
Read the rest of this entry »

18

php正则表达式中的模式修正符

分类: PHP编程 暂无评论

在用正则的时候经常看到表达式后面还会有几个符号,这个就是修正符,下面列出了当前在 PCRE 中可能使用的修正符。括号中是这些修正符的内部 PCRE 名。修正符中的空格和换行被忽略,其它字符会导致错误。
i (PCRE_CASELESS)
如果设定此修正符,模式中的字符将同时匹配大小写字母。
m(PCRE_MULTILINE)

默认情况下,PCRE 将目标字符串作为单一的一“行”字符所组成的(甚至其中包含有换行符也是如此)。“行起始”元字符(^)仅仅匹配字符串的起始,“行结束”元字符($)仅仅匹配字符串的结束,或者最后一个字符是换行符时其前面(除非设定了 D 修正符)。这和 Perl 是一样的。
Read the rest of this entry »

07

PHP通过set_exception_handler和set_error_handler自定义错误和异常处理

分类: PHP编程 暂无评论

先来看看核心函数的用法:

set_error_handler() 函数设置用户自定义的错误处理函数。该函数用于创建运行时期间的用户自己的错误处理方法。

需要注意的是如果用它定义了错误处理函数则会完全绕过PHP自身的错误处理。

语法:set_error_handler(error_function,error_types)

error_function 必需,规定发生错误时运行的函数。

error_types 可选,规定在哪个错误报告级别会显示用户定义的错误。默认是 “E_ALL”。 一般在程序用填error_reporting()

set_exception_handler() 函数设置用户自定义的异常处理函数。该函数用于创建运行时期间的用户自己的异常处理方法。

语法:set_exception_handler(exception_function)

exception_function 必需。规定未捕获的异常发生时调用的函数。该函数必须在调用 set_exception_handler() 函数之前定义。这个异常处理函数需要需要一个参数,即抛出的 exception 对象。
Read the rest of this entry »

, ,

05

[转]10个不常见却很有用的PHP函数

分类: PHP编程 1 Comment

1. sys_getloadavg()

sys_getloadavt()可以获得系统负载情况。该函数返回一个包含三个元素的数组,每个元素分别代表系统再过去的1、5和15分钟内的平均负载。

与其让服务器因负载过高而宕掉,不如在系统负载很高时主动die掉一个脚本,sys_getloadavg()就是用来帮你实现这个功能的。 不过很遗憾,该函数在windows下无效。

2. pack()

Pack()能将md5()返回的32位16进制字符串转换为16位的二进制字符串,可以节省存储空间。
Read the rest of this entry »

,

TOP

Videos, Slideshows and Podcasts by Cincopa Wordpress Plugin