1
preg_match_all
2 preg_match_all -- 进行全局正则表达式匹配
3 int preg_match_all ( string pattern , string subject , array matches [ , int flags])
4 在 subject 中搜索所有与 pattern 给出的正则表达式匹配的内容并将结果以 flags 指定的顺序放到 matches 中。
5 搜索到第一个匹配项之后,接下来的搜索从上一个匹配项末尾开始。
6
7
8 近期学习dedecms系统,这个系统里面的图片集是把所有的图片都放在一个字段里面的,
9 形如 :
10 {dede : pagestyle maxwidth = ' 800 ' pagepicnum = ' 12 ' ddmaxwidth = ' 200 ' row = ' 3 ' col = ' 3 ' value = ' 2 ' / }
11 {dede : img ddimg = ' /xf/cms/uploads/userup/4/1240135213-5031.jpg ' text = ' 1 ' width = ' 204 ' height = ' 62 ' } / xf / cms / uploads / userup / 4 / 1240135213 - 5031 . jpg { / dede : img}
12 {dede : img ddimg = ' /xf/cms/uploads/userup/4/1240135213-BW.jpg ' text = ' 2 ' width = ' 862 ' height = ' 654 ' } / xf / cms / uploads / userup / 4 / 1240135213 - BW . jpg { / dede : img}
13 要把所有的图片的url都给匹配出来,这就需要用preg_match_all这个强大的函数 . php程序如下:
14
15 <? php
16 $str = " {dede:pagestyle maxwidth='800' pagepicnum='12' ddmaxwidth='200' row='3' col='3' value='2'/}
17 {dede:img ddimg='/xf/cms/uploads/userup/4/1240135213-5031.jpg' text='1' width='204' height='62'} /xf/cms/uploads/userup/4/1240135213-5031.jpg {/dede:img}
18 {dede:img ddimg='/xf/cms/uploads/userup/4/1240135213-BW.jpg' text='2' width='862' height='654'} /xf/cms/uploads/userup/4/1240135213-BW.jpg {/dede:img}
19 " ;
20 preg_match_all ( " /ddimg=\'(.*?)\'/ " , $str , $match );
21 print_r ( $match );
22 ?>
23 打印出的结果如下 :
24 Array
25 (
26 [ 0 ] => Array
27 (
28 [ 0 ] => ddimg = ' /xf/cms/uploads/userup/4/1240135213-5031.jpg '
29 [ 1 ] => ddimg = ' /xf/cms/uploads/userup/4/1240135213-BW.jpg '
30 )
31
32 [ 1 ] => Array
33 (
34 [ 0 ] => / xf / cms / uploads / userup / 4 / 1240135213 - 5031 . jpg
35 [ 1 ] => / xf / cms / uploads / userup / 4 / 1240135213 - BW . jpg
36 )
37
38 )
39 可以看到array[ 1 ]即为所求的结果的数组。
40
2 preg_match_all -- 进行全局正则表达式匹配
3 int preg_match_all ( string pattern , string subject , array matches [ , int flags])
4 在 subject 中搜索所有与 pattern 给出的正则表达式匹配的内容并将结果以 flags 指定的顺序放到 matches 中。
5 搜索到第一个匹配项之后,接下来的搜索从上一个匹配项末尾开始。
6
7
8 近期学习dedecms系统,这个系统里面的图片集是把所有的图片都放在一个字段里面的,
9 形如 :
10 {dede : pagestyle maxwidth = ' 800 ' pagepicnum = ' 12 ' ddmaxwidth = ' 200 ' row = ' 3 ' col = ' 3 ' value = ' 2 ' / }
11 {dede : img ddimg = ' /xf/cms/uploads/userup/4/1240135213-5031.jpg ' text = ' 1 ' width = ' 204 ' height = ' 62 ' } / xf / cms / uploads / userup / 4 / 1240135213 - 5031 . jpg { / dede : img}
12 {dede : img ddimg = ' /xf/cms/uploads/userup/4/1240135213-BW.jpg ' text = ' 2 ' width = ' 862 ' height = ' 654 ' } / xf / cms / uploads / userup / 4 / 1240135213 - BW . jpg { / dede : img}
13 要把所有的图片的url都给匹配出来,这就需要用preg_match_all这个强大的函数 . php程序如下:
14
15 <? php
16 $str = " {dede:pagestyle maxwidth='800' pagepicnum='12' ddmaxwidth='200' row='3' col='3' value='2'/}
17 {dede:img ddimg='/xf/cms/uploads/userup/4/1240135213-5031.jpg' text='1' width='204' height='62'} /xf/cms/uploads/userup/4/1240135213-5031.jpg {/dede:img}
18 {dede:img ddimg='/xf/cms/uploads/userup/4/1240135213-BW.jpg' text='2' width='862' height='654'} /xf/cms/uploads/userup/4/1240135213-BW.jpg {/dede:img}
19 " ;
20 preg_match_all ( " /ddimg=\'(.*?)\'/ " , $str , $match );
21 print_r ( $match );
22 ?>
23 打印出的结果如下 :
24 Array
25 (
26 [ 0 ] => Array
27 (
28 [ 0 ] => ddimg = ' /xf/cms/uploads/userup/4/1240135213-5031.jpg '
29 [ 1 ] => ddimg = ' /xf/cms/uploads/userup/4/1240135213-BW.jpg '
30 )
31
32 [ 1 ] => Array
33 (
34 [ 0 ] => / xf / cms / uploads / userup / 4 / 1240135213 - 5031 . jpg
35 [ 1 ] => / xf / cms / uploads / userup / 4 / 1240135213 - BW . jpg
36 )
37
38 )
39 可以看到array[ 1 ]即为所求的结果的数组。
40