字符类(方括号)左方括号开始一个字符类的描述,并以方中括号结束。单独的一个右方括号没有特殊含义。如果一个右方括号需要作为一个字符类中的成员,那么可以将它写在字符类的首字符处(如果使用了^取反,那么是第二个)或者使用转义符。一个字符类在目标字符串中匹配一个单独的字符;该字符必须是字符类中定义的字符集合的其中一个,除非使用了^对字符类取反。如果^需要作为一个字符类的成员,确保它不是该字符类的首字符,...
继续阅读 >
分类:全部列表
2014
11-07
11-07
PHP扩展之文本处理(二)——PCRE正则表达式语法7——内部选项设置
PCRE_CASELESS, PCRE_MULTILINE, PCRE_DOTALL, PCRE_UNGREEDY,PCRE_EXTRA, PCRE_EXTENDED andPCRE_DUPNAMES等模式修饰符设置可以在模式内部通过一个perl选项字符序列来设置,语法为:(?修饰符),可用的修饰符有:Internaloptionlettersifor PCRE_CASELESSmfor PCRE_MULTILINEsfor PCRE_DOTALLxfor PCRE_EXTENDEDUfor PCRE_UNGREEDYXfor PCRE_EXTRAJfor PCRE_INFO_JCHANGED比...
继续阅读 >
2014
11-07
11-07
PHP扩展之文本处理(二)——PCRE正则表达式语法8——子组(子模式)
子组通过圆括号分隔界定,并且它们可以嵌套。将一个模式中的一部分标记为子组(子模式)主要是来做两件事情:将可选分支局部化。比如,模式cat(arcat|erpillar|)匹配”cat”,“cataract”,“caterpillar”中的一个,如果没有圆括号的话,它匹配的则是”cataract”,“erpillar”以及空字符串。将子组设定为捕获子组(向上面定义的).当整个模式匹配后,目标字符串中匹配子组的部分将会通过 pcre_exec()() 的 ovector...
继续阅读 >
2014
11-07
11-07
PHP扩展之文本处理(二)——PCRE正则表达式语法9——重复/量词
重复次数是通过量词指定的,可以紧跟在下面元素之后:单独的字符,可以是经过转义的元字符。字符类后向引用(参加下一部分)子组(除非它是一个断言)一般的重复量词指定了一个最小数值和一个最大数值的匹配次数,通过花括号包裹两个数字,两个数字之间用逗号隔开的语法定义。两个数值都必须小于65536,并且第一个数字必须小于等于第二个。比如: z{2,4} 匹配”zz”,“zzz”,“zzzz”。单个的右花括号不是特殊字...
继续阅读 >
2014
11-07
11-07
PHP扩展之文本处理(二)——PCRE正则表达式语法10——后向引用
在一个字符类外面,反斜线紧跟一个大于0(可能还有一位数)的数字就是一个到模式中之前出现的某个捕获组的后向引用。如果紧跟反斜线的数字小于10,它总是一个后向引用,并且如果在模式中没有这么多的捕获组会引发一个错误。换一种说法,被引用的括号不能少于被引用的小于10的数量。查看上面的”反斜线”部分查看具体的数字处理方式。一个后向引用会直接匹配被引用捕获组在目标字符串中实际捕获到的内容,而不是匹配子...
继续阅读 >
2014
11-07
11-07
PHP扩展之文本处理(二)——PCRE正则表达式语法11——断言
一个断言就是一个对当前匹配位置之前或之后的字符的测试,它不会实际消耗任何字符。简单的断言代码有\b、\B、\A、\Z、\z、^、$等等。更加复杂的断言以子组的方式编码。它有两种类型:前瞻断言(从当前位置向前测试)和后瞻断言(从当前位置向后测试)。一个断言子组的匹配还是通过普通方式进行的,不同在于它不会导致当前的匹配点发生改变。 前瞻断言中的正面断言(断言此匹配为真)以”(?=”开始,消极断言以”(?!”开头...
继续阅读 >
2014
11-07
11-07
PHP扩展之文本处理(二)——PCRE正则表达式语法12——一次性子组
对于同时有最大值和最小值量词限制的重复项,在匹配失败后,紧接着会以另外一个重复次数重新评估是否能使模式匹配。当模式的作者明确知道执行上没有问题时,通过改变匹配的行为或者使其更早的匹配失败以阻止这种行为是很有用的。考虑一个例子,模式\d+foo应用到目标行 123456bar 时:在匹配了6个数字后匹配”foo”时失败,通常的行为时匹配器尝试使\d+只匹配5个数字,只匹配4个数字,在最终失败之前依次进行...
继续阅读 >
2014
11-07
11-07
PHP扩展之文本处理(二)——PCRE正则表达式语法13——条件子组
可以使匹配器根据一个断言的结果,或者之前的一个捕获子组是否匹配来条件式的匹配一个子组或者在两个可选子组中选择。条件子组的两种语法如下:(?(condition)yes-pattern)(?(condition)yes-pattern|no-pattern)如果条件满足,使用yes-pattern,其他情况使用no-pattern(如果指定了)。如果有超过2个的可选子组,会产生给一个编译期错误。条件一共有两种。如果在(condition)的括号内是数字组成的文本,条件在该数字...
继续阅读 >
2014
11-07
11-07
PHP扩展之文本处理(二)——PCRE正则表达式语法14——注释及递归模式
注释字符序列(?#标记开始一个注释直到遇到一个右括号。不允许嵌套括号。注释中的字符不会作为模式的一部分参与匹配。如果设置了 PCRE_EXTENDED 选项,一个字符类外部的未转义的#字符就代表本行剩余部分为注释。递归模式考虑匹配圆括号内字符串的问题,允许无限嵌套括号。如果不使用递归,最好的方式是使用一个模式匹配固定深度的嵌套。它不能处理任意深度的嵌套。perl5.6提供了一个实验性的功能允许正则表达式递归...
继续阅读 >
2014
11-07
11-07
PHP扩展之文本处理(二)——PCRE正则表达式语法15——性能
模式中一些项可能比其他一些更加高效。比如使用[aeiou]这样的字符类会比可选路径(a|e|i|o|u)高效。一般而言,用尽可能简单的构造描述需求是最搞笑的。JeffreyFriedl书(精通正则表达式)中包含了很多关于正则表达式性能的讨论。当一个模式以.*开始并且设置了 PCRE_DOTALL 选项时,模式通过PCRE隐式锚定,因为它可以匹配字符串的开始。然而,如果 PCRE_DOTALL 没有设置,PCRE不能做这个优化,因为.元字符不能匹配...
继续阅读 >
2014
11-07
11-07
PHP扩展之文本处理(二)——PCRE正则表达式模式修饰符
下面列出了当前可用的PCRE修饰符。括号中提到的名字是PCRE内部这些修饰符的名称。模式修饰符中的空格,换行符会被忽略,其他字符会导致错误。i (PCRE_CASELESS)如果设置了这个修饰符,模式中的字母会进行大小写不敏感匹配。m (PCRE_MULTILINE)默认情况下,PCRE认为目标字符串是由单行字符组成的(然而实际上它可能会包含多行),"行首"元字符(^)仅匹配字符串的开始位置,而"行末"元字符($)仅匹配字符串末尾,或...
继续阅读 >
2014
11-07
11-07
PHP扩展之文本处理(二)——PCRE与POSIX正则表达式的不同
自PHP5.3.0起, POSIX正则表达式扩展被废弃。在POSIX正则和PCRE正则之间有一些不同,本文列出了在转向PCRE时最显著的需要知道的不同点。PCRE函数需要模式以分隔符闭合。不像POSIX,PCRE扩展没有专门用于大小写不敏感匹配的函数。取而代之的是,支持使用i (PCRE_CASELESS) 模式修饰符完成同样的工作。其他模式修饰符同样可用于改变匹配策略。POSIX函数从最左面开始寻找最长的匹配,但是PCRE在第一个合法匹配后...
继续阅读 >
2014
11-07
11-07
PHP扩展之文本处理(三)——POSIX正则表达式函数及使用示例
POSIXRegex函数ereg_replace —正则表达式替换ereg —正则表达式匹配eregi_replace —不区分大小写的正则表达式替换eregi —不区分大小写的正则表达式匹配split —用正则表达式将字符串分割到数组中spliti —用正则表达式不区分大小写将字符串分割到数组中sql_regcase —产生用于不区分大小的匹配的正则表达式使用示例:<?php// Returns true if "abc" is found anywhere in $string.ereg("abc...
继续阅读 >
2014
11-07
11-07
PHP变量与类型扩展之数组及数组函数大全
一、概述及安装这些函数允许你通过不同的方式来使用和操作数组。数组是存储、管理和操作变量必不可少的工具。PHP支持简单数组和多维数组,数组可由用户自己创建也可以由其它函数创建。有很多特殊的数据库处理函数可以从数据库查询中返回数组以及一些返回数组的函数。请参考有关数组的章节来详细了解PHP中数组是如何实现及使用的。使用这些函数不需要安装,它们是PHP核心的一部分。二、数组函数大全array_change_key_ca...
继续阅读 >
2014
11-07
11-07
PHP变量与类型扩展之类与对象
一、概述和安装这些函数允许你获得类和对象实例的相关信息。你可以获取对象所属的类名,也可以是它的成员属性和方法。通过使用这些函数,你不仅可以找到对象和类的关系,也可以是它们的继承关系(例如,对象类继承自哪个类)。请参考面向对象相关章节来查看在PHP里,对象和类如何实现和使用的详细描述。使用这些函数不需要安装,它们是PHP核心的一部分。二、类与对象函数大全__autoload —尝试加载未定义的类call_u...
继续阅读 >
2014
11-07
11-07
PHP变量与类型扩展之函数处理及变量处理
函数处理相关函数:call_user_func_array —Callacallbackwithanarrayofparameterscall_user_func —Callthecallbackgivenbythefirstparametercreate_function —Createananonymous(lambda-style)functionforward_static_call_array —Callastaticmethodandpasstheargumentsasarrayforward_static_call —Callastaticmethodfunc_get_arg —Returnanitemfromtheargumentlis...
继续阅读 >
2014
11-07
11-07
PHP变量与类型扩展之反射及其使用
一、概述与安装PHP5具有完整的反射API,添加了对类、接口、函数、方法和扩展进行反向工程的能力。此外,反射API提供了方法来取出函数、类和方法中的文档注释。请注意部分内部 API 丢失了反射扩展工作所需的代码。例如,一个内置的PHP类可能丢失了反射属性的数据。这些少数的情况被认为是错误,不过,正因为如此,它们应该被发现和修复。使用这些函数不需要安装,它们是PHP核心的一部分。二、使用范例在反射文档...
继续阅读 >
2014
11-07
11-07
PHP扩展之Web服务(一)——OAuth
一、概述及安装此扩展提供OAuth消费方和提供方之间的绑定。OAuth是一种建立在HTTP之上的授权协议,用于允许应用程序安全访问数据而无需存储用户名和密码。PECL/oauth需要PHP5.1或更高版本,以及ext/hash和ext/pcre。如果在构建时选择PECL/oauth则可选择性地需要libcurl。如果使用libcurl配置,则必须构建HTTPS支持。安装此PECL扩展相关的信息可在手册中标题为 PECL扩展的安装章节中找到。二、使用范...
继续阅读 >
2014
11-07
11-07
PHP扩展之Web服务(二)——SOAP
一、概述及安装SOAP扩展可以用于编写SOAP服务器和客户端,支持 SOAP1.1, SOAP1.2 和 WSDL1.1 规格的子集。此扩展需要 libxml PHP扩展。这表示需要使用 --enable-libxml ,尽管这将隐式完成因为libxml是缺省开启的。要开启SOAP支持,配置PHP时要加上 --enable-soap .二、相关函数is_soap_fault —ChecksifaSOAPcallhasfaileduse_soap_error_handler —SetwhethertousetheSOAPerrorhandl...
继续阅读 >
2014
11-07
11-07
PHP扩展之Web服务(三)——XML-RPC
一、概述及安装这些函数用于编写XML-RPC服务器和客户端,想了解更多可以访问 http://www.xmlrpc.com,以及http://xmlrpc-epi.sourceforge.net。此扩展需要 libxml PHP扩展。这表示需要使用 --enable-libxml ,尽管这将隐式完成因为libxml是缺省开启的。默认情况下在PHP中是不能使用XML-RPC支持的。你需要使用 --with-xmlrpc[=DIR] 配置选项编译PHP才能够使用XML-RPC支持。从PHP4.1.0开始附带了此扩展。二...
继续阅读 >
2014
11-07
11-07
PHP扩展之XML操作(一)——SimpleXML
一、简介及安装SimpleXML扩展提供了一个非常简单和易于使用的工具集,能将XML转换成一个带有一般属性选择器和数组迭代器的对象。此扩展需要 libxml PHP扩展。这表示需要使用 --enable-libxml ,尽管这将隐式完成因为libxml是缺省开启的。需要PHP5及以上版本。此扩展默认为启用,编译时可通过下列选项禁用: --disable-simplexml二、使用示例基本使用Example#1Includefileexample.phpwithXMLstring<?php...
继续阅读 >
2014
11-07
11-07
PHP扩展之XML操作(二)——XML解析器安装及概述
一、概述及安装XML(可扩展标记语言,eXtensibleMarkupLanguage)是一种在互联网上用于结构化文档交互的数据格式。它是互联网协会(W3C)定义的一个标准。与XML及其相关技术的信息可访问http://www.w3.org/XML/。此PHP扩展实现支持JamesClark使用PHP编写的 expat。此工具包可解析(但不能验证)XML文档。它支持PHP所提供的3种字符编码: US-ASCII, ISO-8859-1 和 UTF-8。不支持 UTF-16。此扩展可 创建X...
继续阅读 >
2014
11-07
11-07
PHP扩展之XML操作(三)——XML解析器使用及相关函数
一、XML元素结构例程第一个例程缩进显示文档中的开始元素结构。Example#1显示XML元素结构<?php$file = "data.xml";$depth = array();function startElement($parser, $name, $attrs){global $depth;for ($i = 0; $i < $depth[$parser]; $i++) {echo " ";}echo "$name\n";$depth[$parser]++;}function endElement($parser, $name){global $depth;$depth[$parser]--;}$xml_parse...
继续阅读 >
2014
11-07
11-07
PHP扩展之XML操作(四)——XMLReader
一、概述及安装TheXMLReaderextensionisanXMLPullparser.Thereaderactsasacursorgoingforwardonthedocumentstreamandstoppingateachnodeontheway.Itisimportanttonotethatinternally,libxmlusestheUTF-8encodingandassuch,theencodingoftheretrievedcontentswillalwaysbeinUTF-8encoding.此扩展需要 libxml PHP扩展。这表示需要使用 --enable-libxml ,尽管这将隐式...
继续阅读 >