Heim  >  Artikel  >  php教程  >  php中preg正则函数使用

php中preg正则函数使用

WBOY
WBOYOriginal
2016-06-21 08:47:321436Durchsuche
1.preg_match和preg_match_all的区别
preg_match和 preg_match_all区别是preg_match只匹配一次。而preg_match_all全部匹配,直到字符串结束。例:
<?php
//注:正则 /a.+?e/ 是非贪婪模式(因为量词‘+’后面加上了‘?’),如果使用 /a.+?e/U 则变回了贪婪模式
preg_match("/a.+?e/","abcdefgabcdefgabcdefg",$out1);
preg_match_all("/a.+?e/","abcdefgabcdefgabcdefg",$out2);
var_dump($out1);
var_dump($out2);
/*
输出:
array (size=1)
  0 => string &#39;abcde&#39; (length=5)

array (size=1)
  0 =>
    array (size=3)
      0 => string &#39;abcde&#39; (length=5)
      1 => string &#39;abcde&#39; (length=5)
      2 => string &#39;abcde&#39; (length=5)
 */
?>
2.贪婪模式和非贪婪模式的区别
如:String str="abcaxc";
  Patter p="ab*c";
贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。如上面使用模式p匹配字符串str,结果就是匹配到:abcaxc(ab*c)。
非贪婪匹配:就是匹配到结果就好,较少的匹配字符。如上面使用模式p匹配字符串str,结果就是匹配到:abc(ab*c)。
例:
<?php
$str = "http://www.baidu/.com?url=www.sina.com/";
preg_match("/http:(.*)com/", $str, $matches1); //贪婪匹配
var_dump($matches1);

preg_match("/http:(.*?)com/", $str, $matches2); //非贪婪匹配(量词&#39;*&#39;后面跟上了&#39;?&#39;)
var_dump($matches2);

/*
array (size=2)
  0 => string &#39;http://www.baidu/.com?url=www.sina.com&#39; (length=38)
  1 => string &#39;//www.baidu/.com?url=www.sina.&#39; (length=30)

array (size=2)
  0 => string &#39;http://www.baidu/.com&#39; (length=21)
  1 => string &#39;//www.baidu/.&#39; (length=13)
 */
?>
3.preg_match_all参数PREG_PATTERN_ORDER(默认)和PREG_SET_ORDER的区别
<?php
echo(&#39;PREG_PATTERN_ORDER&#39;);
preg_match_all("<[^>]+>(.*)</[^>]+>U",
    "<b>start: </b><b>this is a test</b><b>end</b>",
    $out1);
var_dump($out1);

echo(&#39;PREG_SET_ORDER&#39;);
preg_match_all("<[^>]+>(.*)</[^>]+>U",
    "<b>start: </b><b>this is a test</b><b>end</b>",
    $out2, PREG_SET_ORDER);
var_dump($out2);

/*
PREG_PATTERN_ORDER
array (size=2)
  0 =>
    array (size=3)
      0 => string &#39;<b>start: </b>&#39; (length=14)
      1 => string &#39;<b>this is a test</b>&#39; (length=21)
      2 => string &#39;<b>end</b>&#39; (length=10)
  1 =>
    array (size=3)
      0 => string &#39;start: &#39; (length=7)
      1 => string &#39;this is a test&#39; (length=14)
      2 => string &#39;end&#39; (length=3)

PREG_SET_ORDER
array (size=3)
  0 =>
    array (size=2)
      0 => string &#39;<b>start: </b>&#39; (length=14)
      1 => string &#39;start: &#39; (length=7)
  1 =>
    array (size=2)
      0 => string &#39;<b>this is a test</b>&#39; (length=21)
      1 => string &#39;this is a test&#39; (length=14)
  2 =>
    array (size=2)
      0 => string &#39;<b>end</b>&#39; (length=10)
      1 => string &#39;end&#39; (length=3)
 */
?>

延伸阅读:preg_match_all使用实例



Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn