Daily Archives: 2011 年 03 月 21 日

Hello World

php使用正则抠文字

比如有邮件模板:

当当网已收到您于${time}提交的订单${orderId},我们会在收到您的${amount}元的货款后及时处理订单,预计1-2天从${location}发货。

现在需要提取出其中的占位符来做下一步的处理,可以首先使用“/\\$\{\w+\}/”抠出占位符“${xxx}”,然后使用“/\w+/”抠出占位符内的支付,这两步,都需要使用preg_match_all方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function get_placeholder($str){
  $reg1 = "/\\$\{\w+\}/";
  $out1 = array();
  $r1 = preg_match_all($reg1, $str, $out1, PREG_PATTERN_ORDER);
  if($r1 > 0){
    $reg2 = "/\w+/";
    $rArr = array();
    foreach($out1[0] as $o){
      $out2 = array();
      $r2 = preg_match_all($reg2, $o, $out2, PREG_PATTERN_ORDER);
      if($r2 > 0){
        array_push($rArr, $out2[0][0]);
      }
    }
    if(count($rArr) > 0){
      return $rArr;
    }
  }
  return false;
}

将上面的邮件模板放进去,便可以返回:array(‘time’, ‘orderId’, ‘amount’, ‘location’)

Hello World

cakephp取referer

再Controller内:

$this->referer()

比如:$this->redirect($this->referer());