Home >> php >> php 应用中的点滴

php 应用中的点滴

本文记录的是在 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)

留言/有话要说

Copyright © 2012 Dimensions Data Business. All rights reserved.
server process 6.658 seconds.
WP-Backgrounds Lite by InoPlugs Web Design and Juwelier Schönmann 1010 Wien