我有以下字符串:^ 1Flo ^ 2wer ^ 3Po ^ 4wer 您可以看到http://www.holysh1t.net/quake-live-colors-nickname/
的示例我希望能够使用PHP获取此字符串并在我的html页面中以彩色显示。
不幸的是,我没有成功,并想知道是否有人可以帮助提出一些代码来做到这一点。
谢谢 Crouz
答案 0 :(得分:2)
您可以将/\^([1-7])([^\^]+)/
替换为<span class="quake_colour_$1">$2</span>
,然后根据需要更改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;
}
代码:
<?php
$string = '^1Flo^2wer^3Po^4wer';
$html = preg_replace('/\^([1-7])([^\^]+)/', '<span class="quake_colour_$1">$2</span>', $string);
echo $html;
?>
哪个输出:
<span class="quake_colour_1">Flo</span><span class="quake_colour_2">wer</span><span class="quake_colour_3">Po</span><span class="quake_colour_4">wer</span>
或者,您可以使用inline-css执行此操作:
<?php
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 '<span style="color: ' . self::$colours[$matches[1]] . '">' . $matches[2] . '</span>';
}
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) "<span style="color: red">Flo</span><span style="color: lime">wer</span><span style="color: yellow">Po</span><span style="color: blue">wer</span>"
正则表达式尸检:
\^
字面^
个字符。需要转义为^
是一个正则表达式字符。([1-7])
匹配1到7位数的捕获组([^\^]+)
一个匹配字符不 ^
个字符,重复1次或更多次答案 1 :(得分:1)
explode('^', $my_string)
foreach element in the exploded array:
extract the first character and asociate it with a color
print "<span style='background-color:" . $color . "'>" . $text . "</span>"
这个migth让你大致了解如何做到这一点。希望这有帮助
答案 2 :(得分:0)
在^ X标志上拆分字符串 检索每个部分的X. 打印content_of_part_till_next_ ^和
你应该完成
很容易做出虚构的东西,但你会通过这样做来学习:
首先尝试拆分^并使用字符串操作从中进行操作。 尝试explode()或regex