欢迎访问宙启技术站
智能推送

PHP preg_match_all函数的用法

发布时间:2023-11-29 21:49:46

preg_match_all函数是PHP中用于匹配多个字符串的正则表达式函数。其用法如下:

1. 基本语法:

preg_match_all(pattern, subject, matches);

其中,

- pattern:需要匹配的正则表达式;

- subject:需要进行匹配的字符串;

- matches:用以存储匹配结果的数组。

2. 匹配结果:

preg_match_all函数会返回匹配到的结果数量(可以通过判断返回值是否为0来判断是否匹配成功),并将匹配到的结果存储在matches数组中。

3. 正则表达式语法:

- 常用的正则表达式语法如下:

- \d:匹配数字;

- \w:匹配字母、数字、下划线;

- \s:匹配空白字符;

- [a-z]:匹配小写字母;

- [A-Z]:匹配大写字母;

- [0-9]:匹配数字;

- . :匹配任意字符;

- 正则表达式限定符:

- * :匹配0个或多个;

- + :匹配1个或多个;

- ? :匹配0个或1个;

- {n} :匹配n个;

- {n,} :匹配至少n个;

- {n,m} :匹配n至m个;

- 正则表达式修饰符:

- i :忽略大小写;

- m :将$匹配到每一行的结束(

符号后面);

- s :将.匹配到包括换行符在内的所有字符;

- u :用于Unicode模式,处理UTF-8字符串;

- e :将模式替换为PHP代码执行;

- x :忽略模式中的空白字符;

- A :强制从开始位置匹配;

- D :强制从非开始位置匹配;

- U :非贪婪模式。

4. 例子:

下面是一个使用preg_match_all函数匹配HTML中img标签的例子:

   <?php
   $html = '
   <html>
   <body>
   <img src="image1.jpg" alt="Image 1">
   <img src="image2.jpg" alt="Image 2">
   </body>
   </html>
   ';

   $pattern = '/<img.*?src="(.*?)".*?>/';

   preg_match_all($pattern, $html, $matches);

   print_r($matches);
   ?>
   

上述例子使用正则表达式/<img.*?src="(.*?)".*?>/匹配了HTML中的img标签,并将匹配到的结果存储在了$matches数组中。

输出结果为:

   Array (
       [0] => Array
           (
               [0] => <img src="image1.jpg" alt="Image 1">
               [1] => <img src="image2.jpg" alt="Image 2">
           )

       [1] => Array
           (
               [0] => image1.jpg
               [1] => image2.jpg
           )
   )
   

可以看到,$matches数组中包含了两个子数组, 个子数组中存储了匹配到的完整img标签,第二个子数组中存储了匹配到的img标签中的图片地址。

总结起来,preg_match_all函数是PHP中用于进行正则表达式匹配的函数,可以用于匹配多个字符串。通过正则表达式语法进行匹配,并将匹配到的结果存储在matches数组中,方便后续处理和使用。