根据以下内容替换事件?

时间:2014-01-21 14:10:53

标签: php

 $data = "abcaooobooocooodoooeooofooogoooxyz";

我想做什么?

我想检查$ data变量中的每个字母,如果它前面是'ooo',那么我用大写的相同字母替换它并删除ooo,否则只返回字母

例如,当我致电

do_it($data); 

必须返回以下

abcABCDEFGxyz

到目前为止我在尝试什么?

 function do_it($d) {
 $d = strtolower($d);
 $d = str_replace('aooo','A');
 $d = str_replace('booo','B');
 $d = str_replace('cooo','C');
 $d = str_replace('dooo','D');
 $d = str_replace('eooo','E');
 ... untill the end of alphabets
 return $d;
 }

问题

最简单的方法是什么?

2 个答案:

答案 0 :(得分:1)

正则表达式

preg_replace('/([\w]{1})ooo/e', 'strtoupper("$1")', $data);

答案 1 :(得分:0)

使用preg_replace_callback

function replace($string) {
    return strtoupper(substr($string[0], 0, 1));
}
$text = "abcaooobooocooodoooeooofooogoooxyz";
echo preg_replace_callback("/[a-z]ooo/", "replace", $text);
// abcABCDEFGxyz