2013-10-24 175 views
-2

我有以下字符串:^ 1Flo^2wer^3PO^4wer 你可以看到這是什麼一樣http://www.holysh1t.net/quake-live-colors-nickname/PHP的字符串替換HTML標籤

一個例子,我想能夠得到這個字符串和顯示它在我的HTML頁面使用PHP的顏色。

不幸的是,我沒有成功,想知道是否有人可以幫助拿出一些代碼來做到這一點。

謝謝 Crouz

+3

我們不在這裏爲你做你的工作。 –

+0

@MarcBWho說你在這裏做別人的工作?我猜你假設是因爲我沒有發佈任何我沒有嘗試過的代碼。我從昨天開始就一直在嘗試,我嘗試了很多東西。如果我發佈了所有這些內容,您可能會抱怨我發佈了太多示例。 – Crouzilles

+0

我也有這個問題。在我的問題中還有另一個實例。 http://stackoverflow.com/questions/18833968/replacing-multiple-parts-of-a-string –

回答

2

您可以用<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; 
?> 

DEMO

,輸出:

<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次或更多次
+0

@ h20000000非常感謝。自昨晚以來,我一直試圖想出一些東西,但沒有成功。你是個救世主。 – Crouzilles

+0

@Crouzilles正則表達式在很多*事情上都很棒。這是其中之一。 :) – h2ooooooo

+0

我想我需要學習正則表達式,我還沒有遇到它,它確實非常強大。 – Crouzilles

0

拆分的^ X標誌串 檢索每個部分 打印content_of_part_till_next_ ^和

,你應該做的

的X很容易使假事情是這樣的,但你會通過這樣做來學習它:

首先嚐試拆分^,然後使用字符串操作工作。 嘗試爆炸()或正則表達式

1

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會給你一個如何做到這一點的總體思路。希望這可以幫助

+0

@pleasedontbelong我嘗試了很多東西,但都沒有成功。感謝您的幫助,但請不要以爲我事先沒有做任何工作。 – Crouzilles

+0

哈哈抱歉的假設:)但因爲你沒有發佈任何代碼之前 – pleasedontbelong