以下でそれっぽいことは実現できます。
php
1<style>
2.hoge{
3 color:red;
4}
5</style>
6<?php
7$str='a、またはbなどのc。';
8$key=array('/a/','/b/','/c/');
9$str_grept=preg_replace($key, '<SPAN CLASS="hoge">$0</SPAN>', $str);
10echo $str_grept;
出力結果
html
1<SPAN CLASS="hoge">a</SPAN>、または<SPAN CLASS="hoge">b</SPAN>などの<SPAN CLASS="hoge">c</SPAN>。
$0とすることでマッチした文字が入ってきます。
(0だけじゃダメなケースもあるのでそこは置換対象や要件次第でかえる必要があります)
注意点
あくまで「それっぽい」としたのはタグと属性を大文字にしているところにあります。
第1引数を配列で突っ込んだとしても結局は1つ目から1つずつ置換しているに過ぎないので、htmlタグと属性を小文字にするとclassのcが置換対象となってしまいます。
今回の手法以外で文字色を変えようとしても結局はどこかで引っかかる可能性があり、今回のような単純な置換のためだけのことになるので、あまり汎用性が高いやり方ではないかもしれません。
もしかしたらもっと汎用性が高い回答が来るかもしれないので
私の回答は1つの参考としてもう少し待ってみてもいいかもしれません。