preg_match与preg_match_all的区别

2014年02月28日 06:40 by:老修

preg_match() 

函数用于进行正则表达式匹配,成功返回 1 ,否则返回 0 。reg_match() 第一次匹配成功后就会停止匹配,如果要实现全部匹配,则需使用 preg_match_all() 函数。

例子 :

  1. <?php
  2. if(preg_match("/php/i", "PHP is the web scripting language.", $matches)){
  3.     echo "A match was found:". $matches[0];
  4. } else {
  5.     echo "A match was not found.";
  6. }
  7. ?>

浏览器输出:

A match was found: PHP

preg_match_all()

preg_match_all() 函数用于进行正则表达式全局匹配,成功返回整个模式匹配的次数(可能为零),如果出错返回 FALSE 。

下面的例子演示了将文本中所有 <pre></pre> 标签内的关键字(php)显示为红色。

  1. <?php
  2. $str = "<pre>学习php是一件快乐的事。</pre><pre>所有的phper需要共同努力!</pre>";
  3. $kw = "php";
  4. preg_match_all('/<pre>([sS]*?)</pre>/',$str,$mat);
  5. for($i=0;$i<count($mat[0]);$i++){
  6.     $mat[0][$i] = $mat[1][$i];
  7.     $mat[0][$i] = str_replace($kw, '<span style="color:#ff0000">'.$kw.'</span>', $mat[0][$i]);
  8.     $str = str_replace($mat[1][$i], $mat[0][$i], $str);
  9. }
  10. echo $str;
  11. ?>