比如有邮件模板:
当当网已收到您于${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’)