我有以下字符串:^ 1Flo^2wer^3PO^4wer 你可以看到這是什麼一樣http://www.holysh1t.net/quake-live-colors-nickname/PHP的字符串替換HTML標籤
一個例子,我想能夠得到這個字符串和顯示它在我的HTML頁面使用PHP的顏色。
不幸的是,我沒有成功,想知道是否有人可以幫助拿出一些代碼來做到這一點。
謝謝 Crouz
我有以下字符串:^ 1Flo^2wer^3PO^4wer 你可以看到這是什麼一樣http://www.holysh1t.net/quake-live-colors-nickname/PHP的字符串替換HTML標籤
一個例子,我想能夠得到這個字符串和顯示它在我的HTML頁面使用PHP的顏色。
不幸的是,我沒有成功,想知道是否有人可以幫助拿出一些代碼來做到這一點。
謝謝 Crouz
您可以用<span class="quake_colour_$1">$2</span>
替換/\^([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;
}
,代碼:
<?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>
或者,你可以用做直列的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>"
Regex的屍檢:
\^
字面^
字符。需要轉義爲^
是一個正則表達式字符。([1-7])
捕獲組從1位數的匹配是不^
字符的字符捕獲組匹配7([^\^]+)
,重複1次或更多次@ h20000000非常感謝。自昨晚以來,我一直試圖想出一些東西,但沒有成功。你是個救世主。 – Crouzilles
@Crouzilles正則表達式在很多*事情上都很棒。這是其中之一。 :) – h2ooooooo
我想我需要學習正則表達式,我還沒有遇到它,它確實非常強大。 – Crouzilles
拆分的^ X標誌串 檢索每個部分 打印content_of_part_till_next_ ^和
,你應該做的
的X很容易使假事情是這樣的,但你會通過這樣做來學習它:
首先嚐試拆分^,然後使用字符串操作工作。 嘗試爆炸()或正則表達式
eveen但你至少應該嘗試的東西在問這個問題之前,這裏有一個關於如何做到這一點的基本算法。
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會給你一個如何做到這一點的總體思路。希望這可以幫助
@pleasedontbelong我嘗試了很多東西,但都沒有成功。感謝您的幫助,但請不要以爲我事先沒有做任何工作。 – Crouzilles
哈哈抱歉的假設:)但因爲你沒有發佈任何代碼之前 – pleasedontbelong
我們不在這裏爲你做你的工作。 –
@MarcBWho說你在這裏做別人的工作?我猜你假設是因爲我沒有發佈任何我沒有嘗試過的代碼。我從昨天開始就一直在嘗試,我嘗試了很多東西。如果我發佈了所有這些內容,您可能會抱怨我發佈了太多示例。 – Crouzilles
我也有這個問題。在我的問題中還有另一個實例。 http://stackoverflow.com/questions/18833968/replacing-multiple-parts-of-a-string –