php 应用中的点滴

来源:互联网 发布:软件编程语言 编辑:程序博客网 时间:2024/05/22 03:40

 

本文记录的是在 php 程序过程中的一些点滴

(原文链接 http://ddbiz.com/?p=175)

  • php 多行匹配

 

适用版本 php 5.3.2

preg_match('/<prefix>(.*?)<//prefix>/is', $content)

 

 

根据文档,正则修正符的使用说明:

 

/i

不区分大小写

 

/s 

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

上面的例子就是用到此选项

 

/U 

 

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

 

/m

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

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

 

  • php pdo mysql 的参数设定

pdo_mysql 中,链接mysql 的 pdostatment 使用的参数形式为 :param, 如:

 

$sth = $dbh->prepare('select id from tuser where name=:name');

$sth->execute(array(':name' => $name));

 

如果使用 ?param 的话,execute 会报错,但是没有进一步的错误信息, 如 :

 

$sth = $dbh->prepare('select id from tuser where name=?name');

$sth->execute(array('?name' => $name)); //返回 false

同时 $dbh->errorInfo() 的内容为:
Array
(
    [0] => 00000
    [1] => 
    [2] => 
)

(原文链接 http://ddbiz.com/?p=175)

原创粉丝点击