Updates from 七月, 2009

  • 去掉a标签中无用的属性

    shishirui 17:49 on 2009/07/24 | 0 Permalink | Reply

    $data = preg_replace('/<a.*?href="(.*?)".*?>/i', '<a href="\\1">', $data);

     
  • iphone网页制作要点

    shishirui 20:19 on 2009/07/21 | 0 Permalink | Reply

    禁止页面缩放:

    <meta name="viewport" content="width=320; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" />

    打电话链接的写法:

    <a href="打电话给你">21-12345678</a>

    自动滚屏隐藏地址栏:

    <script type="application/x-javascript">
    addEventListener("load",function() {
    setTimeout(hideURLbar, 0);
    }, false);
    function hideURLbar(){
    window.scrollTo(0, 1);
    }
    </script>

     
  • echo "${${phpinfo()}}";

    shishirui 15:19 on 2009/07/21 | 0 Permalink | Reply

    echo "${${phpinfo()}}";

    这句将导致phpinfo()被执行,在某些情况下,可能会导致安全漏洞。

     
  • 正则表达式的模式修正符

    shishirui 20:04 on 2009/07/17 | 0 Permalink | Reply

    今天因为没搞清楚一个模式修正符而捣鼓了半天,所以特此记录。

    下面列出了当前在 PCRE 中可能使用的修正符。括号中是这些修正符的内部 PCRE 名。修正符中的空格和换行被忽略,其它字符会导致错误。

    i (PCRE_CASELESS)
    如果设定此修正符,模式中的字符将同时匹配大小写字母。

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

    当设定了此修正符,“行起始”和“行结束”除了匹配整个字符串开头和结束外,还分别匹配其中的换行符的之后和之前。这和 Perl 的 /m 修正符是等效的。如果目标字符串中没有“\n”字符或者模式中没有 ^ 或 $,则设定此修正符没有任何效果。

    s(PCRE_DOTALL)
    如果设定了此修正符,模式中的圆点元字符(.)匹配所有的字符,包括换行符。没有此设定的话,则不包括换行符。这和 Perl 的 /s 修正符是等效的。排除字符类例如 [^a] 总是匹配换行符的,无论是否设定了此修正符。

    x(PCRE_EXTENDED)
    如果设定了此修正符,模式中的空白字符除了被转义的或在字符类中的以外完全被忽略,在未转义的字符类之外的 # 以及下一个换行符之间的所有字符,包括两头,也都被忽略。这和 Perl 的 /x 修正符是等效的,使得可以在复杂的模式中加入注释。然而注意,这仅适用于数据字符。空白字符可能永远不会出现于模式中的特殊字符序列,例如引入条件子模式的序列 (?( 中间。

    e
    如果设定了此修正符,preg_replace() 在替换字符串中对逆向引用作正常的替换,将其作为 PHP 代码求值,并用其结果来替换所搜索的字符串。

    只有 preg_replace() 使用此修正符,其它 PCRE 函数将忽略之。

    注意: 本修正符在 PHP3 中不可用。

    A(PCRE_ANCHORED)
    如果设定了此修正符,模式被强制为“anchored”,即强制仅从目标字符串的开头开始匹配。此效果也可以通过适当的模式本身来实现(在 Perl 中实现的唯一方法)。

    D(PCRE_DOLLAR_ENDONLY)
    如果设定了此修正符,模式中的美元元字符仅匹配目标字符串的结尾。没有此选项时,如果最后一个字符是换行符的话,美元符号也会匹配此字符之前(但不会匹配任何其它换行符之前)。如果设定了 m 修正符则忽略此选项。Perl 中没有与其等价的修正符。

    S
    当一个模式将被使用若干次时,为加速匹配起见值得先对其进行分析。如果设定了此修正符则会进行额外的分析。目前,分析一个模式仅对没有单一固定起始字符的 non-anchored 模式有用。

    U(PCRE_UNGREEDY)
    本修正符反转了匹配数量的值使其不是默认的重复,而变成在后面跟上“?”才变得重复。这和 Perl 不兼容。也可以通过在模式之中设定 (?U) 修正符或者在数量符之后跟一个问号(如 .*?)来启用此选项。

    X(PCRE_EXTRA)
    此修正符启用了一个 PCRE 中与 Perl 不兼容的额外功能。模式中的任何反斜线后面跟上一个没有特殊意义的字母导致一个错误,从而保留此组合以备将来扩充。默认情况下,和 Perl 一样,一个反斜线后面跟一个没有特殊意义的字母被当成该字母本身。当前没有其它特性受此修正符控制。

    u(PCRE_UTF8)
    此修正符启用了一个 PCRE 中与 Perl 不兼容的额外功能。模式字符串被当成 UTF-8。本修正符在 Unix 下自 PHP 4.1.0 起可用,在 win32 下自 PHP 4.2.3 起可用。自 PHP 4.3.5 起开始检查模式的 UTF-8 合法性。

     
  • top Load average

    shishirui 09:36 on 2009/07/16 | 0 Permalink | Reply

    在Linux系统中,uptime、w、top等命令都会有系统平均负载load average的输出,那么什么是系统平均负载呢?
    系统平均负载被定义为在特定时间间隔内运行队列中的平均进程树。如果一个进程满足以下条件则其就会位于运行队列中:

    • 它没有在等待I/O操作的结果
    • 它没有主动进入等待状态(也就是没有调用'wait')
    • 没有被停止(例如:等待终止)

    例如:

    [root@www2 init.d]# uptime
    7:51pm up 2 days, 5:43, 2 users, load average: 8.13, 5.90, 4.94

    命令输出的最后内容表示在过去的1、5、15分钟内运行队列中的平均进程数量。
    一般来说只要每个CPU的当前活动进程数不大于3那么系统的性能就是良好的,如果每个CPU的任务数大于5,那么就表示这台机器的性能有严重问题。对于上面的例子来说,假设系统有两个CPU,那么其每个CPU的当前任务数为:8.13/2=4.065。这表示该系统的性能是可以接受的。

     
  • css中类似pre的样式

    shishirui 20:22 on 2009/07/14 | 0 Permalink | Reply

    /* 不自动换行 */
    white-space: pre;

    /* 自动换行 */
    white-space:pre-wrap;

     
  • vim中ctags的用法

    shishirui 13:24 on 2009/07/13 | 0 Permalink | Reply

    [/home/brimmer/src]$ ctags -R

    "-R"表示递归创建,也就包括源代码根目录下的所有子目录下的源程序。"tags"文件中包括这些对象的列表:

    • 用#define定义的宏
    • 枚举型变量的值
    • 函数的定义、原型和声明
    • 名字空间(namespace)
    • 类型定义(typedefs)
    • 变量(包括定义和声明)
    • 类(class)、结构(struct)、枚举类型(enum)和联合(union)
    • 类、结构和联合中成员变量或函数

    VIM用这个"tags"文件来定位上面这些做了标记的对象,下面介绍一下定位这些对象的方法:

    1) 用命令行。在运行vim的时候加上"-t"参数,例如:

    [/home/brimmer/src]$ vim -t foo_bar

    这个命令将打开定义"foo_bar"(变量或函数或其它)的文件,并把光标定位到这一行。

    2) 在vim编辑器内用":ta"命令,例如:

    :ta foo_bar

    3) 最方便的方法是把光标移到变量名或函数名上,然后按下"Ctrl-]"。用"Ctrl-o"退回原来的地方。

    注意:运行vim的时候,必须在"tags"文件所在的目录下运行。否则,运行vim的时候还要用":set tags="命令设定"tags"文件的路径,这样vim才能找到"tags"文件。
    在函数中移动光标

    [{ 转到上一个位于第一列的"{"

    }] 转到下一个位于第一列的"{"

    {   转到上一个空行

    }   转到下一个空行

    gd 转到当前光标所指的局部变量的定义

    *   转到当前光标所指的单词下一次出现的地方

    #   转到当前光标所指的单词上一次出现的地方

     
  • CSS的阴影效果

    shishirui 19:14 on 2009/07/11 | 0 Permalink | Reply

    box-shadow: 1px 1px 5px rgba(0, 0, 0, 0.2);
    webkit-box-shadow: 1px 1px 5px rgba(0, 0, 0, 0.2);
    moz-box-shadow: 1px 1px 5px rgba(0, 0, 0, 0.2);

    注:IE无效

     
  • Linux 技巧:让进程在后台可靠运行的几种方法

    shishirui 12:42 on 2009/07/11 | 0 Permalink | Reply

    http://www.ibm.com/developerworks/cn/linux/l-cn-nohup/

     
  • 一组不错的函数,分析http头、cookie串等

    shishirui 15:19 on 2009/07/09 | 0 Permalink | Reply

    http://cn2.php.net/http_parse_cookie

    需要安装PECL

     
c
撰写新文章
j
下一篇
k
上一篇
r
回复
e
编辑
o
显示/隐藏评论
t
返回顶部
esc
关闭