Using preg regular function in php
1.The difference between preg_match and preg_match_all
The difference between preg_match and preg_match_all is that preg_match only matches once. And preg_match_all matches everything until the end of the string. Example:
<?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 'abcde' (length=5)
array (size=1)
0 =>
array (size=3)
0 => string 'abcde' (length=5)
1 => string 'abcde' (length=5)
2 => string 'abcde' (length=5)
*/
?>
Copy after login
2. The difference between greedy mode and non-greedy mode
Such as: String str="abcaxc";
Patter p="ab*c";
Greedy matching: Regular expressions generally tend to match to the maximum length, which is the so-called greedy matching. For example, if the pattern p is used to match the string str, the result is: abcaxc(ab*c).
Non-greedy matching: Just match the result, with fewer matching characters. For example, if the pattern p is used to match the string str, the result is: abc(ab*c).
Example:
<?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); //非贪婪匹配(量词'*'后面跟上了'?')
var_dump($matches2);
/*
array (size=2)
0 => string 'http://www.baidu/.com?url=www.sina.com' (length=38)
1 => string '//www.baidu/.com?url=www.sina.' (length=30)
array (size=2)
0 => string 'http://www.baidu/.com' (length=21)
1 => string '//www.baidu/.' (length=13)
*/
?>
Copy after login
3. The difference between preg_match_all parameters PREG_PATTERN_ORDER (default) and PREG_SET_ORDER
<?php
echo('PREG_PATTERN_ORDER');
preg_match_all("|<[^>]+>(.*)</[^>]+>|U",
"<b>start: </b><b>this is a test</b><b>end</b>",
$out1);
var_dump($out1);
echo('PREG_SET_ORDER');
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 '<b>start: </b>' (length=14)
1 => string '<b>this is a test</b>' (length=21)
2 => string '<b>end</b>' (length=10)
1 =>
array (size=3)
0 => string 'start: ' (length=7)
1 => string 'this is a test' (length=14)
2 => string 'end' (length=3)
PREG_SET_ORDER
array (size=3)
0 =>
array (size=2)
0 => string '<b>start: </b>' (length=14)
1 => string 'start: ' (length=7)
1 =>
array (size=2)
0 => string '<b>this is a test</b>' (length=21)
1 => string 'this is a test' (length=14)
2 =>
array (size=2)
0 => string '<b>end</b>' (length=10)
1 => string 'end' (length=3)
*/
?>
Copy after login
Extended reading: preg_match_all usage examples
http://www.bkjia.com/PHPjc/894184.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/894184.htmlTechArticleUsing preg regular function in php 1. The difference between preg_match and preg_match_all The difference between preg_match and preg_match_all is that preg_match only matches once. And preg_match_all matches all until the string ends...