2017-09-01 138 views
-2

我正在尋找一種快速方法來突出顯示文本字符串,如果它有一個標誌,即(-R)作爲第一個符號,從開始到結束\ n)的。用php突出顯示HTML CSS中的文本字符串

該函數將被賦予一個多個字符串的文本,以「\ n」分隔,可能包含或不包含任何標記。事情是這樣的:

-Rnotes to be red 
-Ynotes to be yellow 
-G notes to be green 

在這個函數的輸出,我需要得到這個:

<span style="background-color:red">notes to be red</span> 
<span style="background-color:yellow">notes to be yellow</span> 
<span style="background-color:green"> notes to be green</span> 
+0

如果頁面已經加載,javascript會更好用 – clearshot66

+0

As @ clearshot66提到使用javascript。您可以使用switch語句並使用susbtring來獲得字母 – ctwheels

+0

另外,如果它們可能或不可能以標誌開始,那麼阻止用戶在註釋之前輸入-R並且可能會弄亂某些東西? – ctwheels

回答

0

你可以嘗試一些鏈接這樣的:

$notes = array(
    '-Rnote', 
    '-Gnote', 
    '-Ynote', 
    '-Rnote1', 
    '-Gnote1', 
    '-Ynote1', 
); 

$colors = array(
    'R' => 'red', 
    'G' => 'green', 
    'Y' => 'yellow', 
); 

foreach ($notes as $note) { 

    $color_key = substr($note, 1, 1); 
    $note_string = substr($note, 2); 

    $bg_color = array_key_exists($color_key, $colors) ? $colors[$color_key] : ''; 
    echo '<p style="background-color:' . $bg_color . '">' . $note_string . '</p>'; 
} 

在關聯存儲你的顏色數組可能會使未來添加更多顏色變得容易。

這可能有點混亂,但它應該適合你。

+1

好的!但我認爲它應該是這樣的https://3v4l.org/kTHkX在範圍 – Andreas

+0

中輸出「註釋」您可能是對的。我想我只是爲了測試而做了這件事,忘了把它放回去。 – Matt

+1

很抱歉更新了鏈接我不小心使用了$ note,你已經使用的變量 – Andreas

1

基於馬特的回答我做出了這個答案。
請記住,這是Matt的想法,因此如果你喜歡這個,請不要忘記提高他的答案。

我使用str_replace用span標記替換-R(或Y或G),並使用-R作爲顏色數組中的鍵。
然後我只是添加閉合跨度標籤。

$notes = array(
    '-Rnote', 
    '-Gnote', 
    '-Ynote', 
    '-Rnote1', 
    '-Gnote1', 
    '-Ynote1', 
); 
// Above array can be replaced by: 
// $notes = explode("\n", $text); 

$colors = array(
    '-R' => 'red', 
    '-G' => 'green', 
    '-Y' => 'yellow', 
); 

foreach ($notes as $note) { 
    If (isset($colors[substr($note,0,2)])){ 
     echo str_replace(substr($note, 0, 2), '<span style="background-color:' . $colors[substr($note, 0, 2)] . '">', $note) . "</span>\n"; 
    }Else{ 
     Echo $note ."\n"; 
    } 
} 

https://3v4l.org/9YDAX

編輯注意到我怎麼忘了,有可能無法在字符串中的彩色標籤。
增加了一個沒有顏色註釋的回顯

+0

這是更好的非正則表達式方法。查找數組是此任務的最佳實踐。 – mickmackusa