在PHP中有两套正则表达式函数库。一套是由PCRE(Perl Compatible Regular Expression)库提供的。PCRE 库使用和 Perl 相同的语法规则实现了正则表达式的模式匹配,其使用以“preg_”为前缀命名的函数。另一套是由POSIX(Portable Operation System interface)扩展库提供的。POSIX扩展的正则表达式由POSIX 1003.2定义,一般使用以“ereg_”为前缀命名的函数。两套函数库的功能相似,执行效率稍有不同。一般而言,实现相同的功能,使用PCRE库的效率略占优势。
preg_match
函数原型:
int preg_match (string $pattern, string $content [, array $matches])
preg_match() 函数在$content字符串中搜索与$pattern给出的正则表达式相匹配的内容。如果提供了$matches,则将匹配结果放入其中。$matches[0]将包含与整个模式匹配的文本,$matches[1]将包含第一个捕获的与括号中的模式单元所匹配的内容,以此类推。该函数只作一次匹配,最终返回 0 或 1 的匹配结果数。
示例:
| 1 | $content = "Current date and time is ".date("Y-m-d h:i a").", we are learning PHP together."; | 

preg_match_all
函数原型:
int preg_match_all( string pattern, string subject, array matches [, int flags ] )
用于进行正则表达式全局匹配,成功返回整个模式匹配的次数(可能为零),如果出错返回 FALSE 。
| 1 | $str = "<pre>学习php是一件快乐的事。</pre><pre>所有的phper需要共同努力!</pre>"; | 

preg_grep
函数原型:
array preg_grep (string $pattern, array $input)
preg_grep()函数返回一个数组,其中包括了$input数组中与给定的$pattern模式相匹配的单元。对于输入数组$input中的每个元素,preg_grep()也只进行一次匹配。
示例:
| 1 | $subjects = array( | 

整理常用的正则表达式
邮箱
| 1 | "/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$/" | 
手机号
| 1 | "/^1[34578]\d{9}$/" | 
中文
| 1 | "/([\x{4e00}-\x{9fa5}])/u" | 
身份证
| 1 | "/^\d{15}|\d{18}$/" |