在一个框架中偶然发现一段比较有意思的正则,到现在还没完全搞懂,先记录下.

  

 1 <?php
 2 /*
 3 $str = 'string';
 4 //第一个参数为正则 //是左右定界符, //就代表每个字符串都匹配
 5 //PREG_SPLIT_NO_EMPTY 不返回空的
 6 //第3个参数 代表分割多少个数组
 7 $chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
 8 print_r($chars);
 9 exit();
10 */
11 
12 $text = '1 2 3 4/5/6 "7/8 9" 10';
13 // 空格或者/(可以多个)分割
14 //$results = preg_split('~[ /]+~', $text); //Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => "7 [7] => 8 [8] => 9" [9] => 10 )
15 
16 // *匹配前面的[^"](非")的任意次
17 $results = preg_split('~"[^"]*"(*SKIP)(*F)|[ /]+~', $text);
18 print_r($results);
19 /*
20  * Array
21 (
22     [0] => 1
23     [1] => 2
24     [2] => 3
25     [3] => 4
26     [4] => 5
27     [5] => 6
28     [6] => "7/8 9"
29     [7] => 10
30 )
31  *
32  */

  google查了下 (*SKIP)(*F) 用法,全是英文,看完了似懂非懂,不过结合上面的的例子,大概能看出个所以然.

 

posted on 2016-10-18 14:15  睡着的糖葫芦  阅读(564)  评论(0编辑  收藏  举报