您的位置:首页 > 其它

preg_match_all中第四个参数PREG_PATTERN_ORDER,PREG_SET_ORDER,PREG_OFFSET_CAPTURE之间的区别!

2012-01-30 02:27 429 查看
echo "<br><br>";
$str = "asdf{title}asdf{author}sadf{con}asfasdfasdfasf";
$mode = "/{(.*)}/U";
$flags1 = PREG_PATTERN_ORDER;       //整个数组是二维数组,$arr1[0]是包括边界所构成匹配字符串的数组,$arr1[1]除去边界所构成的匹配字符串的数组;
preg_match_all($mode,$str,$arr1,$flags1);
print_r($arr1);

echo "<br><br>";
$flags2 = PREG_SET_ORDER;           //整个数组是二维数组,$arr2[0][0]是第一个包括边界所构成的匹配的字符串,$arr2[0][1]是第一个除去边界所构成的匹配的字符串,之后的数组以此类推
preg_match_all($mode,$str,$arr2,$flags2);
print_r($arr2);

echo "<br><br>";
$flags3 = PREG_OFFSET_CAPTURE;          //整个数组是三维数组,$arr3[0][0][0]是第一个包括边界所构成的匹配的字符串,$arr3[0][0][1]是到达第一个匹配字符串的边界的偏移量(边界不算在内),之后以此类推,$arr2[1][0][0]是第一个包括边界所构成的匹配的字符串,$arr3[1][0][1]是到达第一个匹配字符串的边界的偏移量(边界算在内);
preg_match_all($mode,$str,$arr3,$flags3);
print_r($arr3);


区别已经注明在注释中,通过下面的数组应该会把区别表明得更直观!~~

<br><br>Array

(

[0] => Array

(

[0] => {title}

[1] => {author}

[2] => {con}

)

[1] => Array

(

[0] => title

[1] => author

[2] => con

)

)

<br><br>Array

(

[0] => Array

(

[0] => {title}

[1] => title

)

[1] => Array

(

[0] => {author}

[1] => author

)

[2] => Array

(

[0] => {con}

[1] => con

)

)

<br><br>Array

(

[0] => Array

(

[0] => Array

(

[0] => {title}

[1] => 4

)

[1] => Array

(

[0] => {author}

[1] => 15

)

[2] => Array

(

[0] => {con}

[1] => 27

)

)

[1] => Array

(

[0] => Array

(

[0] => title

[1] => 5

)

[1] => Array

(

[0] => author

[1] => 16

)

[2] => Array

(

[0] => con

[1] => 28

)

)

)

php菜鸟,希望与大家共同学习!~~qq:1309782600

本文出自 “小威的php快乐之路!~~” 博客,请务必保留此出处http://ywweini21.blog.51cto.com/3011722/768537
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: