正则表达式的高级技巧8个常用的概念(7)
http://www.itjxue.com 2015-08-06 23:50 来源:未知 点击次数:
7. 回调(Callbacks)
匹配结果中的特定内容有时可能会需要某种特别的修改。要应用多重而复杂的修改,正则表达式的回调就有了用武之地。回调是用于函数preg_replace_callback中的动态修改字串的方式。你可以为preg_replace_callback指定某个函数为参数,此函数能接收匹配结果数组为参数,并将数组修改后返回,作为替换的结果。
例如,我们想将某字串中的字母全部转变成大写。十分不巧,PHP没有直接转化字母大小写的正则操作符。要完成这项任务,就可以用到正则回调。首先,表达式要匹配出所有需要被大写的字母:
/\b\w/
上式同时使用了字词边界和字符类。光有这个式子还不够,我们还需要一个回调函数:
function upper_case( $matches ) {
return strtoupper( $matches[0] );
}
函数upper_case接收匹配结果数组,并将整个匹配结果转化成大写。 在此例中,$matches[0]代表需要被大写化的字母。然后,我们再利用preg_replace_callback实现回调:
preg_replace_callback( '/\b\w/', 'upper_case', $str );
一个简单的回调即有这般强大的力量。