想看table字符串中是否有“rpt_”或者“ods_”或者“dw_”,如果有,则把这个匹配到的字符串截取出来放到一个数组中,我是这么来做的
$table="s_dw_xxdf_aw_aaas";
preg_match('/rpt_|ods_|dw_|/i', $table, $arr);
print_r($arr);
但是为嘛打印出来的数组是
(
    [0] => 
)

解决方案 »

  1.   


    //正则表达式中没有最后的 | ,楼主的正则表达式匹配的是一个空字符串
    preg_match('/rpt_|ods_|dw_/i', $table, $arr);
    var_dump($arr);//array(1) { [0]=> string(3) "dw_" } 
      

  2.   

    $arr=array();
    $table="ods_sdw_xxrpt_df_aw_aaas";
    preg_match_all('/rpt_|ods_|dw_/i', $table, $arr);
    print_r($arr);//Array ( [0] => Array ( [0] => ods_ [1] => dw_ [2] => rpt_ ) ) 
      

  3.   

    preg_match 进行正则表达式匹配,只匹配一次,返回1,否则0,
         格式:preg_match("正则表达式","被匹配的字串",存放结果的变量名,PREG_OFFSET_CAPTURE,起始偏移量)
    其中:PREG_OFFSET_CAPTURE表示获取匹配索引位置
            起始偏移量:从指定位置开始匹配
    preg_match_all -- 进行全局正则表达式匹配 , 返回共计匹配的个数。和上面的一样,不同的是匹配到最后。
      

  4.   


    学习了,我是这么理解的:<br/>
    preg_match()进行匹配每匹配到一个值放入到数组元素中,但是键值不会更改,所以覆盖,显示的始终是最后一个数组元素。<br/>
    preg_match_all()进行匹配每匹配到一个值放入到数组元素中,但是键值会自增,即所谓的偏移,所以结果都记录了下来。<br/>
    就像mysql_fetch_array()函数一样。