PHP中preg_match_all函数正则匹配详解

preg_match_all函数是用来获取指定数据内容的,它经常用于执行正则表达多,下面我来给大家介绍两个关于preg_match_all函数实现,一个是获取url参数,一个是获取内容中图片方法.

preg_match_all — 执行一个全局正则表达式匹配

int preg_match_all ( string $pattern ,string $subject [,array &$matches [, int $flags = PREG_PATTERN_ORDER [,int $offset = 0 ]]] )

例,代码如下:

  1. <?php
  2. preg_match_all("|<[^>]+>(.*)</[^>]+>|U",
  3. "<b>example: </b><div align=left>this is a test</div>",
  4. $out, PREG_PATTERN_ORDER);
  5. echo $out[0][0] . ", " . $out[0][1] . "n";
  6. echo $out[1][0] . ", " . $out[1][1] . "n";
  7. ?>

如何获取伪静态url中的参数变量,已经对应的值,比如说,你现在url的是这样的,/js/d1b3cid419299191rs好脚本.

你的.htaccess文件会这样写rewirte规则 RewriteRule ^js/(.*)$ /index.php?m=Sell&a=index&g=$1 [QSA,PT,L]

这样你就可以把g接收过来,代码如下:

  1. $get = 'd1b3cid419299191rs好脚本';
  2. $rs_pos = strpos($get,'rs');
  3. if($rs_pos !== false)
  4. {
  5. $rs = substr($get,$rs_pos);
  6. $rs = str_replace('rs','',$rs);
  7. $rs = strpos($rs,'/')!==false ? substr($rs,0,strpos($rs,'/')) : $rs;
  8. $get = substr($get,0,$rs_pos);
  9. }
  10. echo 'keywords='.$rs;
  11. echo '<br>';
  12. preg_match_all('/([a-z]*)([0-9]+)/',$get,$m);
  13. if($m)
  14. {
  15. $k = $v = '';
  16. $count = count($m[1]);
  17. for($i = 0; $i <= $count; $i++)
  18. {
  19. ${$m[1][$i]} = $m[2][$i];
  20. if(isset(${$m[1][$i]}))
  21. {//开源代码phpfensi.com
  22. echo $m[1][$i].'='.${$m[1][$i]};
  23. echo '<br>';
  24. }
  25. }
  26. }
  27. //结果:keywords=好脚本,d=1,b=3,cid=419299191

匹配文章中的图片,代码如下:

  1. <?php
  2. $con = file_get_contents("http://www.phpfensi.com/");
  3. $pattern="/<[img|IMG].*?src=['|"](.*?(?:[.gif|.jpg|.png]))['|"].*?[/]?>/";
  4. preg_match_all($pattern,$con,$match);
  5. print_r($match);
  6. ?>
  7. 输出代码
  8. Array
  9. (
  10. [0] => Array
  11. (
  12. [0] => <img src="http://www.phpfensi.com/usr/themes/dddefault/images/logo.png" alt="" />
  13. [1] => <img title="" src="http://www.phpfensi.com/usr/uploads/2012/09/531656480.jpg" alt="2" />
  14. [2] => <img src="http://www.phpfensi.com/usr/uploads/2012/09/2647136297.jpg" alt="875EA1C00E50B4542797E24FA6E7E1F2.jpg" />
  15. )//开源代码phpfensi.com
  16. [1] => Array
  17. (
  18. [0] => http://www.phpfensi.com/usr/themes/dddefault/images/logo.png
  19. [1] => http://www.phpfensi.com/usr/uploads/2012/09/531656480.jpg
  20. [2] => http://www.phpfensi.com/usr/uploads/2012/09/2647136297.jpg
  21. )
  22. )