您可以用$2替换/\^([1-7])([^\^]+)/,然后根据需要更改CSS中的颜色。
粘贴到你的CSS文件:
.quake-colour-1 {
color: red;
}
.quake-colour-2 {
color: lime;
}
.quake-colour-3 {
color: yellow;
}
.quake-colour-4 {
color: blue;
}
.quake-colour-5 {
color: cyan;
}
.quake-colour-6 {
color: magenta;
}
.quake-colour-7 {
color: white;
background-color: silver;
}
,代码:
$string = '^1Flo^2wer^3Po^4wer';
$html = preg_replace('/\^([1-7])([^\^]+)/', '$2', $string);
echo $html;
?>
,输出:
FlowerPower
或者,你可以用做直列的CSS:
class QuakeColour {
private static $colours = array(
1 => 'red',
2 => 'lime',
3 => 'yellow',
4 => 'blue',
5 => 'cyan',
6 => 'magenta',
7 => 'white'
);
private static function Replace($matches) {
return '' . $matches[2] . '';
}
public static function Parse($string) {
return preg_replace_callback('/\^([1-7])([^\^]+)/', 'QuakeColour::Replace', $string);
}
}
$string = '^1Flo^2wer^3Po^4wer';
var_dump(QuakeColour::Parse($string));
?>
其输出
string(144) "FlowerPower"
Regex的尸检:
\^字面^字符。需要转义为^是一个正则表达式字符。
([1-7])捕获组从1位数的匹配是不^字符的字符捕获组匹配7
([^\^]+),重复1次或更多次