![零基础PHP学习笔记](https://wfqqreader-1252317822.image.myqcloud.com/cover/195/36710195/b_36710195.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
4.4 正则表达式在PHP中的应用
![](https://epubservercos.yuewen.com/7E78CA/19471983208811306/epubprivate/OEBPS/Images/40266-00-104-03.jpg?sign=1739226659-br6TClCZSKSVakvyjzlneJoCuEoLjTQd-0-2f1c806cc9b11c32783f4cf06654417a)
PHP中提供了两套支持正则表达式的函数库,即PCRE函数库和POSIX函数库。PCRE函数库在执行效率上要略优于POSIX函数库,所以这里只讲解PCRE函数库中的函数。PCRE函数库中常用的函数如表4.4所示。
表4.4 PCRE函数库中常用的函数
![](https://epubservercos.yuewen.com/7E78CA/19471983208811306/epubprivate/OEBPS/Images/105-1.jpg?sign=1739226659-FZxdWYS9Qn9FZy3dyzhcqsmVeRCMavf3-0-863ac022dc1e2ace3a667b4605244425)
下面讲解如何使用PHP中常用的preg_match()函数。
preg_match()函数用于执行匹配正则表达式,函数语法如下:
![](https://epubservercos.yuewen.com/7E78CA/19471983208811306/epubprivate/OEBPS/Images/105-2.jpg?sign=1739226659-6gCyYPLcWuoCxv6J9nu73l7tDrZhmgdU-0-2f5689b63380fe68ec3e72a3028542aa)
参数和返回值如下。
• pattern:要搜索的模式,字符串类型。
• subject:输入字符串。
• matches:可选参数,如果提供了参数matches,它将被填充为搜索结果。$matches[0]将包含完整模式匹配到的文本,$matches[1] 将包含第一个捕获子组匹配到的文本,以此类推。
• 返回值:返回pattern的匹配次数。它的值将是0次(不匹配)或1次,因为preg_match()函数在第一次匹配后将会停止搜索。如果发生错误则preg_match()函数返回FALSE。
查找匹配个数
在明日学院注册页面中,需要对用户输入的手机号码格式进行检测,以避免用户手误导致注册失败。使用preg_match()函数能够实现该功能,具体代码如下:
![](https://epubservercos.yuewen.com/7E78CA/19471983208811306/epubprivate/OEBPS/Images/105-3.jpg?sign=1739226659-84oafNGgVKb6o1EAqRUGix6ief1nteRS-0-ea339bd54d4f5f2bb293ba9303fcfea0)
运行结果如图4.10所示。
![](https://epubservercos.yuewen.com/7E78CA/19471983208811306/epubprivate/OEBPS/Images/106-1.jpg?sign=1739226659-C6wN15ZjpOlCk5oE80VGg9q1hCbHuf8A-0-1fe0e654b448db108b94708b6860086a)
图4.10 preg_match()函数检测手机号码格式
学习笔记
preg_match_all()函数用于执行一个全局正则表达式匹配。它会一直搜索subject直到结尾。