博采众长,精于一技。Live for love, work for dream.

字符编码与特殊字符过滤

PHP对表单提交特殊字符的过滤和处理


一、几个与特殊字符处理有关的PHP函数
 函数名  释义  介绍
htmlspecialchars 将与、单双引号、大于和小于号化成HTML格式 &转成& 
"转成"
' 转成'
<转成&lt;
>转成&gt;
htmlentities() 所有字符都转成HTML格式 除上面htmlspecialchars字符外,还包括双字节字符显示成编码等。
     
addslashes 单双引号、反斜线及NULL加上反斜线转义 被改的字符包括单引号 (')、双引号 (")、反斜线 backslash (\) 以及空字符NULL。
stripslashes 去掉反斜线字符 去掉字符串中的反斜线字符。若是连续二个反斜线,则去掉一个,留下一个。若只有一个反斜线,就直接去掉。
     
quotemeta 加入引用符号 将字符串中含有 . \\ + * ? [ ^ ] ( $ ) 等字符的前面加入反斜线 "\" 符号。
nl2br() 将换行字符转成<br>  
strip_tags 去掉HTML及PHP标记 去掉字符串中任何
HTML标记和PHP标记,包括标记封堵之间的内容。注意如果字符串HTML及PHP标签存在错误,也会返回错误。
mysql_real_escape_string 转义SQL字符串中的特殊字符 转义 \x00  \n 
\r  空格 
"
\x1a,针对多字节字符处理很有效。mysql_real_escape_string会判断字符集,mysql_escape_string则不用考虑。

继续阅读 »

Google Analytics的一些功能

1.一个客户来到网站的首页后,Google Analytics可以统计到他下一个页面是点击哪个页面。这个功能可以用来判断网站具体页面上的哪一些内容比较受欢迎,哪些内容没人点击。可以优化具体页面内容。

2.Google Analytics可以设定一些目标页,然后可以统计到客户是怎样一步步到达目标页的,在哪个环节中丢失率最高,这样可以改善那一个页面的内容,这个功能对电子商务跟注册用户上比较有用。

3.gGoogle Analytics可以跟站内搜索结合,这样可以统计到站内那些关键字大家搜索几率比较高,可以对这些高搜索的关键字内容进行优化。

4.Google Analytics可以交叉比较,可以选择2010年1月份跟2月份的数据一起比较。这样可以大概看过了一个月,网站的流量跟质量是上升还是下降。

5.Google Analytics可以查看各地区的流量外,还可以比较各地区的质量,这个对针对地区营销和线下推广比较有帮助。

6.Google Analytics让流量可以用$价值来表现,比如从某一个网站过来的流量,他不仅可以告诉你这个网站来了多少流量,他还可以告诉你这个网站过来的流量的价值是多少$。($数据越高表示质量越好,跟生活的$不对等的)

7.Google Analytics可以设置你想要知道的统计数据固定每周或者每月发送到你的email邮箱,甚至不用打开Google Analytics界面,只通过收邮件就可以知道一些你想要的数据。

8.Google Analytics的注册者可以把数据分给多个Gmail邮箱共同登录Google Analytics查看数据。

随机了解了一下,天涯,豆瓣,激动网,中关村在线等知名网站也是使用Google Analytics统计器。

PS:感谢(PNP-PHP广州街坊)Peter的整理。

igbinary vs serialize vs json_encode

最近看到memcached扩展支持额外的序列化方式 -- igbinary,这是一个未收录到pecl的php扩展,它提供的两个主要方法:

  • igbinary_serialize
  • igbinary_unserialize

据称可以用它来代替php自带的序列化函数serialize,性能更好,而且占用的字节数也更少。下面我就 igbinary ,serialize ,json_encode三者的性能做了一个简单的测试。

继续阅读 »

PHP Curl 多线程实现

使用方法:

$urls = array("http://baidu.com", "http://21andy.com", "http://google.com");
$mp = new MultiHttpRequest($urls);
$mp->start();

下载: class_curl_multi.php
/*
 * Curl 多线程类
 * 使用方法:
 * ========================
$urls = array("http://baidu.com", "http://dzone.com", "http://google.com");
$mp = new MultiHttpRequest($urls);
$mp->start();
 * ========================
 */
class MultiHttpRequest {
    public $urls = array();
    public $curlopt_header = 1;
    public $method = "GET";
 
    function __construct($urls = false) {
        $this->urls = $urls;
    }
 
    function set_urls($urls) {
        $this->urls = $urls;
        return $this;
     }
 
     function is_return_header($b) {
         $this->curlopt_header = $b;
         return $this;
     }
 
     function set_method($m) {
         $this->medthod = strtoupper($m);
         return $this;
     }
 
     function start() {
         if(!is_array($this->urls) or count($this->urls) == 0){
            return false;
         }
         $curl = $text = array();
         $handle = curl_multi_init();
         foreach($this->urls as $k=>$v){
            $curl[$k] = $this->add_handle($handle, $v);
         }
 
         $this->exec_handle($handle);
         foreach($this->urls as $k=>$v){
             curl_multi_getcontent($curl[$k]);
             echo $curl[$k]."\n";
             //$text[$k] =  curl_multi_getcontent($curl[$k]);
             //echo $text[$k], "\n\n";
             curl_multi_remove_handle($handle, $curl[$k]);
         }
         curl_multi_close($handle);
     }
 
     private function add_handle($handle, $url) {
         $curl = curl_init();
         curl_setopt($curl, CURLOPT_URL, $url);
         curl_setopt($curl, CURLOPT_HEADER, $this->curlopt_header);
         curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
         curl_multi_add_handle($handle, $curl);
         return $curl;
     }
 
     private function exec_handle($handle) {
         $flag = null;
         do {
            curl_multi_exec($handle, $flag);
         } while ($flag > 0);
     }
}

PHP 正确匹配 UTF-8 中文的正则

我以前一直用这个

preg_match('~[\x7f-\xff]+~is', $string, $tmp);
今天才发现,上面这个也会匹配到一些欧洲国家的字符

应该用下面这个,注意修正符 u

preg_match('~[\x{4e00}-\x{9fa5}]+~u', $string, $tmp);
返回顶部