2012-05-01 24 views
0

我已經從數據庫中提取數據,並基於拉到信息的腳本,我想上色它和東西使用的preg_replace上色的東西

我想使它所以如果拉的數據是

&cTe&bst 

它與

<font style="color:#F55">Te</font><font style="color:#5FF">st</font> 

替換它也是我需要確保我可以給它添加越來越多。

我也希望它是一個函數,所以我可以簡單地做

$this->colorize('&cTe&bst'); 

我用笨

+0

'&cTe&bst'應該是什麼意思?什麼是&符號?輸出字符串中遺漏的'c'和'b'是什麼? – Jack

+0

這是一個我的世界的事情,在我的世界裏,如果你把文本放在文本之前,它會變成一種顏色,並且我希望能夠在這個項目的網站上使用它,因爲數據會被拉到那裏。 – unlucky4ever

+0

顏色風格是否存在直到下一個'&'? – dreamlax

回答

2
function colorize($in) 
{ 
    $Colors = array(
     "b" => "#000", 
     "w" => "#FFF", 
     "g" => "#AAA" 
    ); 

    $in = "<span>" . $in; 

    foreach($Colors as $Prefix => $Color) 
    { 
     $in = str_replace("&" . $Prefix, "</span><span style='color: " . $Color . "'>", $in); 
    } 

    $in .= "</span>"; 
    return $in; 
} 

簡單易用。

+0

謝謝,它的工作: ) – unlucky4ever

0

而不是反覆使用<font>標籤那樣,使用帶有一個<span>樣式表。

<span class="blue">Te</span><span class="red">st</span> 

.blue { 
    font-color: #3F1515; 
} 

.red { 
    font-color: #153F3F; 
} 

這將使它更具可讀性並使HTML在尺寸上更小。

爲了您的正則表達式嘗試&.(.*?)(?=&|$)http://regexr.com?30qid

0

無需通過&使用preg_replace,只是explode字符串,並從那裏:

$colors = array('c' => '#F55', 'b' => '#5FF'); 

$str = '&cTe&bst'; 

foreach (explode('&', $str) as $text) 
{ 
    $colorCode = $text[0]; 
    $actualText = substr($text, 1); 
    echo '<span style="color:' . $colors[$colorCode] . '>' . $actualText . '</span>'; 
} 

免責聲明:未經測試&hellip;

+0

對於這一個,我得到一個錯誤「未初始化的字符串偏移量:0」爲「$ colorCode = $ text [0];」 – unlucky4ever

+0

對不起,我沒有測試它,可能更好地爆炸的字符串,'var_dump'的結果,看看如何處理它從那裏... – dreamlax

+0

它的作品和所有,我只是得到那個錯誤 – unlucky4ever